我已经使用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
我收到错误
最佳答案
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。
关于c++ - 将RTP vp8有效负载数据包保存到.webm文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43759907/