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ファイルとしてのみ記録できます。ビデオの解像度は、元のビデオの解像度と同じです。

red5-desc

この例では、ビデオストリームがプッシュされると、ビデオストリームが自動的に記録されます。上書き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アプリケーションの名前であり、ストリーム名はカスタマイズできます。

テスト