2

Live555 lib には良い例testOnDemandRTSPServer.cppがあります。複数のファイルをストリーミングしたい。Live555 にはプレイリストのコンセプトがありますか、それとも Live555 で複数のファイルをストリーミングする方法はありますか?

幸運をお祈りしています

PS:複数のサブセッションを追加しようとしています。その場合、Live555 は最後のセッション ファイルをストリーミングするだけです...

4

3 に答える 3

1

live555 コードに付属するアプリケーションがもう 1 つあります。Live555Media サーバーは、ソース コードの mediaServer ディレクトリ内に存在します。これは仕事をします。dynamicRTSPサーバークラスを使用しています。すべてのメディアファイルを含むフォルダーを指定し、としてアクセスしますrtsp://ip/filename

于 2012-10-21T15:27:02.813 に答える
0

私の0.02セント:それが理にかなっているのかどうかはわかりません.同じセッションでストリーミングしたい場合、それらがすべて同じ形式でエンコードされていることを確認するにはどうすればよいですか. RTSP describe は、ファイルのメディア セッションの説明を取得します。これは、ストリーミング セッションのセットアップに使用されるため、すべてのファイルが同様にエンコードされることが重要です。

RTSP はプレイリストを提供しません。通常、プレイリストは RTSP 経由では転送されませんが、HTTP 経由で転送されます。IMO プレイリストがクライアントに存在する場合、(eof で) RTCP bye パケットを待ってから、プレイリスト内の次のファイル/RTSP URI に対して SETUP と PLAY を実行する方が理にかなっています。

RTSPクライアントが1つのセッションを開始するだけの一連のファイル(プレイリストはサーバー上にある)をストリーミングしたいだけの場合、もちろん、live555ライブラリでカスタムファイルソースを作成することを妨げるものは何もありません...

于 2011-06-30T16:43:41.907 に答える
0

最近、同様のタスクと同様の機能を実行する必要がありました。

ここで、ビデオ H264 ストリーム ファイルをプレイリストのように連続して再生するためにできること (もちろん、それらが同じ解像度、エンコード プロファイルなどである場合)

ByteStreamFileSource::doGetNextFrame メソッドを変更する必要があります。feof(fFid) のようなコードがあります

 if (feof(fFid))
 {
     CloseInputFile(fFid);
     fFid = OpenInputFile(envir(), "test.264");
     //fileName
 } 
else ....

もちろん、まだ LGPL への準拠が必要な場合は、さらに多くの作業が必要になります... このクラスをライブラリの外にコピー/名前変更し、H264VideoFileServerMediaSubsession で同じことを行い、メソッド createNewStreamSource を変更して、ByteStreamFileSource の書き換えたクラスを使用する必要があります。

于 2015-04-07T13:52:39.810 に答える