2017-05-03 58 views
0

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

是怎么得到VP8 RTP包.MP4.webm视频文件的步骤是什么时候?

编辑:我可以得到除VP8有效载荷描述符,有效载荷头和关键帧头之外的原始VP8数据。然后我说每个VP8原始帧IVF头和帧头,根据IVF文件 IVF Document

但是当我想用ffmpeg的

的ffmpeg -i转换我的IVF文件(输出1)至output1.mp4输出1 -c:v VP8 output1.mp4

我得到的错误

convertion error

+0

“然后我将所有RTP vp8数据包的内容保存到一个文件中。” - 你保持数据包边界吗?即它只是二进制连接的垃圾或每个数据包仍然是一个单独的VP8帧与有效的时间戳等? –

+0

我得到所有包括VP8的RTP数据包,然后我从这些数据包中提取了RTP头,并保存了RTP有效载荷数据。我保存的数据只是连接的RTP有效负载。现在我想从原始数据中获取视频。可能首先,我必须找到每个帧的边界,然后我必须为每个帧添加一个头以便能够以vp8格式播放。 我可以通过使用S位和部件ID来提取vp8有效负载标头。所以我认为我可以找到每个框架的边界。 – Ibrahim

回答

1

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

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

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

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

你可以看到现场demo & Documentation

+0

我可以得到原始VP8数据,不包括.VP8有效载荷描述符,标题和关键帧标题。然后根据ivf文件为每个vp8原始帧添加ivf头和帧头。 https://wiki.multimedia.cx/index.php/IVF 但是当我想用ffmpeg的 的ffmpeg转换我的IVF文件(输出1)至output1.mp4 -i输出1 -c:v VP8输出1。 mp4 我收到错误 无效的同步代码48c11d。并且无法在流#0中找到编解码器vp8的标记,容器中当前不支持编解码器 无法为输出文件#0编写标头(不正确的编解码器参数 – Ibrahim

+0

任何人都可以提供有关必须为每个vp8添加的前缀标头详细信息的信息框? – Ibrahim

+0

我可以将RTP(VP8数据包)从wireshark pcap转换为webm吗?JanusGatway是否使用IVF头? –