将H.264 RTP流数据写入容器文件

时间:2018-04-02 16:53:51

标签: ffmpeg h.264 rtp mkv

在通话中,我收到RTP数据包(h264有效载荷)。我试图将其解包并使用ffmpeg将其写入mkv或mp4等容器文件中。但是输出文件没有播放。我遵循以下步骤,请告诉我这里有什么问题。

  1. 获得RTP数据包
  2. 删除了RTP标头12个字节
  3. 再读一个字节并计算出F,NRI&输入值。类型值大部分时间都是1,有时也是5。
  4. 由于类型在1&之间。 23,它是单一的NAL单元。
  5. 分配一个名为BUF的缓冲区。
  6. 将前3个字节写为0x00 0x00 0x01。
  7. 然后从视频有效载荷+ 1偏移复制(因为我们已经读过点#3中描述的1个字节)到BUF
  8. 使用此BUF准备avpacket并使用ffmpeg的AV_Write_ * API将其写入输出文件。这部分我已经正确完成,因为在vp8编解码器的情况下它对我来说很好。
  9. 获取输出文件。
  10. 但是这个文件没有在ffmpeg中播放。
  11. 请让我知道我的方法是正确的。

    我观察到有时一组数据包标记位为0,具有相同的RTP时间戳。我是否需要连接这样的数据包组并写入单个NALU,或者我应该将每个数据包写为单个NALU到输出文件。

0 个答案:

没有答案