実行時にローカルに保存されたビデオ ファイルのエイリアス名を作成したいと考えています。たとえば、「test/video.flv」ファイルがあり、「abc123」エイリアス (または拡張子が重要な場合は「abc123.flv」) を作成します。
これらのエイリアスを一意の使い捨てビデオ パスに使用したいと思います。そのため、1回使用したら取り外す必要があります。
- 実行時にエイリアスを作成する方法は?
- 実行時にそれを削除する方法は?
これに対するより良い解決策を見つけました!red5-web.xml ファイルに Bean を追加し、<bean id="streamFilenameGenerator" class="myapp.FilenameGenerator"></bean>
そのクラスを作成しましたpublic class FilenameGenerator implements IStreamFilenameGenerator
。public String generateFilename(IScope scope, String name, GenerationType type)
ここで、ファイル名の解決を担当する関数をオーバーライドする必要がありました。name パラメータは要求されたストリーム名であり、戻り値は解決されたものです。この時点から、これは簡単です。たとえば、キー=エイリアス名と値=実際の既存のファイル パスで HashMap を作成します。
それを実現するための複数のオプションがあります。
1 つの方法は、シンボリック リンクを作成することです。そのため、基になるオペレーティング システムを使用して、ファイルが存在することを red5 にだますことができます。次に、ApplicationAdapter にリスナーを追加して、必要なイベントをリッスンする必要があります。例: http://dl.fancycode.com/red5/api/org/red5/server/adapter/ApplicationAdapter.html => streamStart/stop など。使用している Red5 バージョンでリッスンできるすべてのイベントを表示するには、Red5 バージョンの ApplicationAdapter を検索する必要があります。
2 番目の解決策は、カスタム ストリーム ハンドラを作成することです。ただし、これにはさらに調査が必要です。ファイルリクエストを変更して、ある種のワイルドカードを適用する標準的なメカニズムがあるとは思いません。最初のソリューションと同様に機能しますが、ファイル要求を処理するには、ApplicationAdapter のメカニズムの一部を書き換え/上書きする必要があります。
したがって、基本的に最善の方法は、ApplicationAdapter を調べて、探しているイベント リスナーを見つけることです。