ffmpeg で RTSP をストリーミングしますか?

ffmpeg で RTSP をストリーミングしますか?

これで、サーバーから LAN 上の別のシステムのクライアントに RTP ビデオ ストリームを正常に送信し、ffplay を使用して再生できるようになりました。今度は、クライアントがビデオを受信し、ビデオの一時停止などの追加オプションを利用できるように、同じネットワークで RTSP を使用してビデオを送信したいと考えています。一般的なガイドラインを教えていただけませんか。または、タスクの達成に役立つリソースを教えていただけませんか。

アップデート:

以下のコマンドを試しました:

ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp

ビデオのリアルタイム ストリーミングは開始されますが、再生、録画などのメディア ストリームを制御するオプションは実際には表示されません。

注意: 現在 RTSP に使用している .sdp ファイルは、RTP ストリーミングに使用しているものと同じです。

答え1

ちなみに、テスト目的でローカルRTSPサーバーをセットアップすることができました。シンプル rtsp サーバー以下の手順に従って ffmpeg を実行します。

  1. rtsp-simple-server.yml次の 1 行で 呼び出される RTSP サーバーの構成ファイルを作成します。
    protocols: [tcp]
    
  2. RTSP サーバーを Docker コンテナとして起動します。
    $ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
    
  3. ffmpeg を使用して、ビデオ ファイル (永久にループ) をサーバーにストリーミングします。
    $ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/live.stream
    

実行したら、ffplay を使用してストリームを表示できます。

$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream

ご了承くださいシンプル rtsp サーバーUDP ストリーム (iso TCP) も処理できますが、サーバーを Docker コンテナとして実行するのは難しいです。

関連情報