Red5アプリケーション開発(2)ライブストリーミングとレコーディング
Red5 Application Development Live Streaming
周囲
オペレーティングシステム:win10 1803
Eclipseバージョン:4.7.3a(酸素)J2EEバージョン
Red5サーバーバージョン:1.0.8リリース
環境構築については、前の記事を参照してください。 Red5アプリケーション開発(1)開発環境構築 フォローアップにはred5フラッシュクライアントの開発が含まれなくなるため、フラッシュビルダープラグインをインストールする必要はありません。
新しいプロジェクトを作成する
Eclipseで新しい動的Webプロジェクトを作成し、プロジェクト名をカスタマイズし、ターゲットランタイムにRed5サーバーランタイムを選択し、構成時に変更を選択して、Red5アプリケーション生成のオプションをチェックします。
依存関係を追加する
ビルドパスに外部JARSを追加し、red5のlibディレクトリにslf4j-api- {Version} .jarを追加します。これはログ関連のツールキットです。
プログラムを変更する
完全なプロジェクトファイルを見る Github
デフォルトで生成されたコードを使用して、クライアントからのプッシュストリームを受け入れることができます。その後、記録機能を追加する必要があります。 Red5の録音機能は比較的シンプルです。ライブストリームはFLVファイルとしてのみ記録できます。ビデオの解像度は、元のビデオの解像度と同じです。
この例では、ビデオストリームがプッシュされると、ビデオストリームが自動的に記録されます。上書きorg.red5.server.adapter.MultiThreadedApplicationAdapter
このクラスのstreamPublishStart()メソッドは、このクラスのリスナーがビデオストリームがプッシュインされたことを検出すると、このメソッドを自動的にトリガーします。次に、このメソッドに記録部分の関数コードを記述します。
@Override public void streamPublishStart(IBroadcastStream stream) { if(true) { try { String streamName = stream.getPublishedName() log.info('Recording stream: ' + streamName ) stream.saveAs(streamName, true) } catch (IOException | ResourceNotFoundException | ResourceExistException e) { e.printStackTrace() } } }
IBroadcastStreamオブジェクトは、クライアントによってプッシュされるビデオストリームです。 saveAs(String name、boolean isAppend)メソッドを呼び出して、ビデオストリームを記録します。 saveAs()の2つのパラメーターは、記録のファイル名と、記録オーバーレイモード中にそれを使用するかどうかです。クライアントが切断すると、自動的に録音が停止します。デフォルトの記録ファイルパスは、[アプリケーションパス] /ストリームパスの下にあります。
カスタム記録パス
パスを変更する必要がある場合は、Red5が提供するファイル名ジェネレータサービスを使用する必要があります。を参照してください。 Red5 wiki 。プロジェクトのJavaパッケージに1つ追加しますCustomFilenameGenerator.java
ファイル、ファイルのコンテンツは公式Wikiから取得し、変更しますWebContent/WEB-INF/red5-web.xml
構成、次の構成コンテンツを追加し、
<bean id='streamFilenameGenerator' class='org.red5.core.CustomFilenameGenerator'> <property name='recordPath' value='D:/code/RED5/recodPath/' /> <property name='playbackPath' value='D:/code/RED5/recodPath/' /> <property name='absolutePath' value='true' /> bean>
これらの構成フィールドはCustomFilenameGenerator.java
です。コンテンツに対応して、org.red5.coreは作成されたプロジェクトのJavaパッケージ名に変更され、recordPath、playbackPath、absolutePathはJavaファイルの3つの静的フィールドであり、対応する構成は必要に応じて変更されます。
ウェルカムページWebContent
ディレクトリにindex.htmlを置くだけです。
機能テスト
テストのためにプロジェクトをRed5ローカルサーバーにデプロイし、プッシュフローテストにOBSを使用します。 OBSプッシュストリームアドレスの形式は次のとおりです。
rtmp://127.0.0.1/liveapp、liveappは作成されたRed5アプリケーションの名前であり、ストリーム名はカスタマイズできます。