7

Viber は最近、「ビデオ プッシュ トゥ トーク」(vptt) とも呼ばれる「インスタント ビデオ メッセージ」オプションを取得しました。

ディレクトリ「.vptt」内のviberデータ内には、拡張子がvpttのファイルがあります。エンベロープ形式は従来の ZIP ファイルで、抽出すると jpg サムネイルと「ビデオ」ファイルが得られます。

ビデオファイルの最初の行には「#!rtpplay1.0」と書かれているので、これはrtp-toolsの形式であり、wireshark でも使用され、実際の WebRTC の傾向に何らかの形で関連している必要があります...

したがって、この rtpdump ファイル内のビデオ コンテンツが暗号化されていない場合 ( ? )、「viber インスタント メッセージ プッシュ トゥ トーク ビデオを保存する方法」は、「rtpdump ビデオを mp4 に変換する方法」に要約されます。

rtpplay はそれをいくつかのポートに送信できますが、ffmpeg/ffplay/vlc には正しい sdp ファイルが必要です。

誰かがこれについてさらに何か知っていますか?

4

2 に答える 2

7

rtpplayrtpdump ファイルは、 およびを使用して 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 コマンド ラインを続けて開始し、次にrtpplays. rtpplays が終了するまで待ちます (約 1 分)。FFmpeg がタイムアウトし、ファイルが完成します。

mkv ファイルは MP4 に変換できますが、MP4 では VP8 がサポートされていないため、トランスコーディングが必要です。トランスコードは FFmpeg で行うこともできます。

残念ながら、オーディオ/ビデオの同期が問題になる可能性があり、FFmpeg のトリックを使用して対処することもできます。または、SDP のようにサンプルレートを調整しますVP8/95000

于 2017-11-05T04:57:37.783 に答える