将RTP vp8有效负载数据包保存到.webm文件

时间:2017-05-03 12:22:03

标签: c++ ffmpeg rtp libpcap vp8

我已经使用Wireshark保存了对.pcap文件的视频通话,我想从RTP数据包中获取视频。 RTP包的有效负载类型是 vp8 ,我可以通过在C ++中使用libpcap库找出vp8 RTP包。然后我将所有RTP vp8数据包的内容保存到文件中。但我无法使用ffmpeg将此原始vp8数据转换为.mp4。 ffmpeg在转换期间出错。 ffmpeg转换错误: 处理输入时找到的数据无效

从vp8 RTP数据包中获取 .mp4 .webm 视频文件的步骤是什么?

编辑:我可以获得原始VP8数据,不包括VP8有效负载描述符,有效负载头和关键帧头。然后我根据ivf文档为每个vp8原始帧添加了ivf头和帧头 IVF Document

但是当我想通过使用ffmpeg将我的ivf文件(output1)转换为output1.mp4

ffmpeg -i output1 -c:v vp8 output1.mp4

我收到错误

convertion error

1 个答案:

答案 0 :(得分:1)

JanusGateway具有将RTP(VP8 / VP9 / H264 / Opus)转换为(webm / mp4)的功能。它只会将RTP编码为相应的容器(webm / mp4 / opus),不包含转码器。

您可以使用ffmpeg将其转码为任何其他格式。

简而言之,janus将store通过在每个数据包中添加前缀头来将RTP数据包放入文件中。然后我们可以使用后处理器将vp8 RTP数据包转换为webm。

https://github.com/meetecho/janus-gateway/blob/master/postprocessing/pp-webm.c

您可以看到直播demo& Documentation