0

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

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

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

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

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

我收到错误

转换错误

4

1 回答 1

2

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

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

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

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

您可以看到现场演示文档

于 2017-05-07T09:42:03.887 回答