解码H264帧C#

时间:2014-09-01 10:47:28

标签: c# video decode h.264

我在C#中使用托管媒体聚合 - https://net7mma.codeplex.com/

我有一个Rtsp客户端,它接收以h264编码的RTP帧(有效负载类型96)。 我希望能够将帧保存到视频文件中,并且还可以判断视频何时开始\结束。

我做了一些阅读,我读到一个一个一个地解码h264帧的问题..并不是真的理解为什么。

以下是我收到的每个RTP帧的方法

void Client_RtpFrameChanged(object sender, Media.Rtp.RtpFrame frame)
{
    // Decode
}
  1. 有人可以解释为什么要逐个解码h264帧吗?
  2. 这是否有开源/库/ dll?
  3. 非常感谢!

1 个答案:

答案 0 :(得分:0)

RtspServer项目中有一个包含的类。

该类是RFC6184Media,它包含打包和解包的方法,并处理所有已定义的Nal单元类型。

在调用Depacketize之后,有一个包含原始比特流有效载荷的缓冲区,你必须添加一个由0x000001组成的起始码,然后是原始比特流中包含的数据。

项目的讨论区域有几个例子。

之后,您可以将流提供给解码器进行解码,然后才能显示帧;通常通过从Yuv到Rgb的转换分别对应于编码时使用的子采样。

我可以看到为一些与帧对应的静态数据包添加一个小型演示,并展示如何实现所需的结果。

将来,如果你在项目页面上进行讨论,我可能会更快地完成它。