2017-03-02 1186 views
4

Viber最近獲得了「即時視頻消息」選項,也稱爲「視頻即按即說」(vptt)。如何將RTPDUMP視頻文件轉換爲mp4

目錄「.vptt」中的viber數據裏面有vptt擴展名的文件。信封格式是經典的ZIP文件,當提取時提供jpg-thumbnail和'video'文件。

視頻文件說:「#!rtpplay1.0」行頭裏面,所以它應該是rtp-tools格式,被Wireshark太,並以某種方式與實際的WebRTC趨勢...

所以,如果視頻內容中這個rtpdump文件沒有加密(?),「如何保存viber即時消息即按即說視頻」歸結爲:「如何將rtpdump視頻轉換爲mp4」。

rtpplay可以將它發送到某個端口,但ffmpeg/ffplay/vlc需要正確的sdp文件。

確實有人對此有進一步瞭解嗎?

回答

1

rtpdump文件可以使用rtpplayFFmpeg轉換爲mp4。

例如,讓我們考慮這些文件:

對其進行分析:

$ 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 

Analyis結果:

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 

讓我們再準備一個命令行啓動FFmpeg的,將根據SDP保存到MP4文件聽這些端口:

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應該同時啓動。

現在,快速連續地啓動準備好的FFmpeg命令行,然後啓動rtpplay s。等到rtpplays完成(大約一分鐘)。 FFmpeg應該超時並完成文件。

mkv文件可能會轉換爲MP4,但它需要轉碼,因爲MP4不支持VP8。代碼轉換也可以用FFmpeg完成。不幸的是,音頻/視頻同步可能是一個問題,也可能使用FFmpeg技巧來解決;或通過調整SDP中的採樣率,如VP8/95000

相關問題