rtpplay
rtpdump ファイルは、 およびを使用して mp4 に変換できますFFmpeg
。
たとえば、次のファイルについて考えてみましょう。
それらを分析します。
$ rtpdump -Fascii -f narwhals-audio.rtpdump | head -n 1
0.000000 RTP len=15 from=0.0.0.0:0 v=2 p=0 x=0 cc=0 m=1 pt=97 (????,0,0) seq=1679 ts=249986024 ssrc=0xf944ac63
$ rtpdump -Fascii -f narwhals-audio.rtpdump | tail -n 1
65.570000 RTP len=15 from=0.0.0.0:0 v=2 p=0 x=0 cc=0 m=1 pt=97 (????,0,0) seq=4959 ts=253134824 ssrc=0xf944ac63
分析結果:
Audio sample rate = (253134824 - 249986024) / (65.57 - 0) ~= 48000
Audio codec: probably opus
Audio payload type: 97
Video sample rate: 90000
Video codec : probably VP8
Video payload type: 96
コーデック名には、推測/調査/すべてを試す必要がある場合があります。
ビデオ用にポート 4646、オーディオ用に 4848 を割り当てて、SDP ファイルを作成しましょう。
v=0
c=IN IP4 127.0.0.1
m=video 4646 RTP/AVP 96
a=rtpmap:96 VP8/90000
m=audio 4848 RTP/AVP 97
a=rtpmap:97 opus/48000
次に、MP4 ファイルへの SDP 保存に従ってこれらのポートをリッスンする FFmpeg を開始するコマンド ラインを準備しましょう。
ffmpeg -v warning -protocol_whitelist file,udp,rtp -f sdp -i narwhals.sdp -copyts -c copy -y narwhals.mkv
FFmpeg は 10 秒間パケットの受信に失敗すると終了するため、まだそのコマンド ラインを開始しないでください。
次に、別のコンソール タブで、rtpplay コマンド ラインを準備します。
rtpplay -T -f narwhals-video.rtpdump 127.0.0.1/4646 & rtpplay -T -f narwhals-audio.rtpdump 127.0.0.1/4848
また、まだ開始しないでください。rtpplay
同時に開始する必要がある 2 つの があることに注意してください。
次に、準備した FFmpeg コマンド ラインを続けて開始し、次にrtpplay
s. rtpplays が終了するまで待ちます (約 1 分)。FFmpeg がタイムアウトし、ファイルが完成します。
mkv ファイルは MP4 に変換できますが、MP4 では VP8 がサポートされていないため、トランスコーディングが必要です。トランスコードは FFmpeg で行うこともできます。
残念ながら、オーディオ/ビデオの同期が問題になる可能性があり、FFmpeg のトリックを使用して対処することもできます。または、SDP のようにサンプルレートを調整しますVP8/95000
。