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

C++ 将RTP vp8有效负载数据包保存到.webm文件,c++,ffmpeg,rtp,libpcap,vp8,C++,Ffmpeg,Rtp,Libpcap,Vp8,我已使用Wireshark将视频调用保存到.pcap文件,我想从RTP数据包中获取视频。RTP包有效载荷类型为强> VP8,通过C++中的LIPPCAP库可以找到VP8 RTP包。然后我将所有RTP vp8数据包的内容保存到一个文件中。但我无法使用ffmpeg将原始vp8数据转换为.mp4。ffmpeg在转换过程中产生错误ffmpeg转换错误:处理输入时发现无效数据 从vp8 RTP数据包中获取.mp4或.webm视频文件的步骤是什么 编辑:我可以获得原始VP8数据,不包括VP8负载描述符、负载

我已使用Wireshark将视频调用保存到.pcap文件,我想从RTP数据包中获取视频。RTP包有效载荷类型为<>强> VP8<强>,通过C++中的LIPPCAP库可以找到VP8 RTP包。然后我将所有RTP vp8数据包的内容保存到一个文件中。但我无法使用ffmpeg将原始vp8数据转换为.mp4。ffmpeg在转换过程中产生错误ffmpeg转换错误:处理输入时发现无效数据

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


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

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

ffmpeg-i output1-c:vvp8 output1.mp4

我会犯错误

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

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

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


您可以看到live&。

“然后我将所有RTP vp8数据包的内容保存到一个文件中。”-您维护数据包边界了吗?也就是说,它只是二进制连接的垃圾,还是每个数据包仍然是一个单独的VP8帧,具有有效的时间戳等?我得到包括VP8在内的所有RTP数据包,然后我从这些数据包中提取RTP头,并保存RTP有效负载数据。我保存的数据只是连接的RTP有效负载。现在我想从原始数据中获取视频。可能,首先我必须找到每一帧的边界,然后我必须为每一帧添加一个标题,以便能够以vp8格式播放。我可以使用S位和部件ID提取vp8有效负载头。这样我想我可以找到每个帧的正确边界。我可以得到原始vp8数据,不包括.vp8有效负载描述符、头和关键帧头。然后,根据ivf文档,我为每个vp8原始帧添加了ivf头和帧头。但是,当我想使用ffmpeg-ffmpeg-I output1-c:v vp8 output1.mp4将ivf文件(output1)转换为output1.mp4时,我得到了无效的同步代码48c11d。并且在流#0中找不到编解码器vp8的标记,容器中当前不支持的编解码器无法为输出文件#0写入头文件(编解码器参数不正确)。有人可能会给出必须为每个vp8帧添加的前缀头的详细信息?我可以转换RTP(vp8数据包)吗从wireshark pcap到webm?JanusGatway是否使用IVF头?