如何将RTPDUMP视频文件转换为MP4

7
Viber最近推出了“即时视频消息”选项,也称为“视频对讲”(vptt)。
在Viber数据目录“.vptt”中有具有vptt扩展名的文件。信封格式是经典的ZIP文件,在提取时会生成jpg缩略图和“视频”文件。
视频文件的第一行中写着“#!rtpplay1.0”,因此应该是rtp-tools的格式,wireshark也使用它,并与实际的WebRTC趋势相关...
因此,如果rtpdump文件中的视频内容未加密(?),“如何保存Viber即时消息对讲视频”就只需要:“如何将rtpdump视频转换为mp4”。
rtpplay可以将其发送到某个端口,但ffmpeg / ffplay / vlc需要正确的sdp文件。
有人知道更多关于这个问题的信息吗?
2个回答

7

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 

分析结果:
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

如果连续10秒钟没有收到任何数据包,FFmpeg会主动退出,所以现在不要启动该命令行。

接下来,在另一个控制台标签中,准备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。等待直到rtpplays完成(大约一分钟)。然后FFmpeg应该超时并完成文件处理。

mkv文件可以转换为MP4,但需要转码,因为MP4不支持VP8。 转码也可以使用FFmpeg进行。

不幸的是,音视频同步可能是一个问题,这也可以通过FFmpeg技巧来解决;或者通过调整SDP中的采样率,例如VP8/95000


1

它适用于Ubuntu上的Viber:

  • 打开您的Viber for PC
  • 播放消息
  • 在Viber -> Media文件夹中找到带有.mp4扩展名的文件。

我没有尝试过其他方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接