質問: rtpを使用したffmpegでのストリーミング シナリオrtpを使用して2つのホスト間でビデオをストリーミングしようとしています。私は以前、次の2つのコマンドを使用してvlcを使用してこの問題を解決しましたサーバ側cvlc video_file.mp4 --sout "#transcode{vcodec=h264, acodec=mpga, ab=128, channels=2, samplerate=44100}: duplicate{dst=rtp{dst=10.x.x.x, port=5004, mux=ts}}" --run-time 40 vlc://quitクライアント側cvlc rtp://@:5004 --sout "#transcode{vcodec=h264, acodec=mpga, ab=128, channels=2, samplerate=44100}: std{access=file, mux=mp4, dst=downloaded.mp4}" --run-time 40 vlc://quit要件同じことをffmpegで実現したいと思います。 同等のコマンドは何ですか?今までの仕事サーバ側ffmpeg -re -i video_file.mp4 -vcodec libx264 -an -f rtp rtp://10.x.x.x:5004 -vn -acodec libtwolame -f rtp rtp://10.x.x.x:5005クライアント側ffmpeg -i rtp://10.x.x.x:5004 -vcodec libx264 -an -i rtp://10.5.19.244:5005 -acodec libtwolame -vn -t 00:00:35 downloaded.mp4ただし、この方法で受信ストリームを記録することはできません。
回答: クライアントのipが10.0.0.2であると想定しますサーバー側で実行するコードffmpeg -re -thread_queue_size 4 -i source_video_file.mp4 -strict -2 -vcodec copy -an -f rtp rtp://10.0.0.2:6005 -acodec copy -vn -sdp_file saved_sdp_file -f rtp rtp://10.0.0.2:7005このコードを実行すると、saved_sdp_fileという名前のsdpファイルが生成されます。これはどういうわけか、ストリームを受信する必要があるクライアントに転送する必要がありますクライアント側で実行するコードffmpeg -protocol_whitelist "file,rtp,udp" -i saved_sdp_file -strict -2 saved_video_file.mp4