在通话中,我收到RTP数据包(h264有效载荷)。我试图将其解包并使用ffmpeg将其写入mkv或mp4等容器文件中。但是输出文件没有播放。我遵循以下步骤,请告诉我这里有什么问题。
- 获得RTP数据包
- 删除了RTP标头12个字节
- 再读一个字节并计算出F,NRI&输入值。类型值大部分时间都是1,有时也是5。
- 由于类型在1&之间。 23,它是单一的NAL单元。
- 分配一个名为BUF的缓冲区。
- 将前3个字节写为0x00 0x00 0x01。
- 然后从视频有效载荷+ 1偏移复制(因为我们已经读过点#3中描述的1个字节)到BUF
- 使用此BUF准备avpacket并使用ffmpeg的AV_Write_ * API将其写入输出文件。这部分我已经正确完成,因为在vp8编解码器的情况下它对我来说很好。
- 获取输出文件。
- 但是这个文件没有在ffmpeg中播放。
醇>
请让我知道我的方法是正确的。
我观察到有时一组数据包标记位为0,具有相同的RTP时间戳。我是否需要连接这样的数据包组并写入单个NALU,或者我应该将每个数据包写为单个NALU到输出文件。