如何解码原始 H264 帧

use*_*920 4 video directshow ffmpeg decoding h.264

我需要开发一个全屏客户端来解码来自网络源的原始 h264 帧。关于从哪里开始有什么建议的方法吗?我一直在看 ffmpeg,但后来我必须将它连接到 VS,但我在路上迷路了。Microsoft Media Foundation 有一个内置的 h264 解码器,但没有足够简单的示例让我理解。与 DirectShow 相同,但微软表示其已绝迹的技术不再使用它。客户端应该能够在 WinXP 及更高版本的目标上运行。因此,如果有人能指出我正确的方向,那就太好了。

Rom*_* R. 5

您正确地列举了选项,并且您说没有简单的示例是正确的。该技术本身有点复杂,通常不会单独使用,而是作为更复杂系统(例如流客户端)的一部分使用。此外,该技术不是免费的,并且没有广泛可用的“默认”H.264 解码器实现。

如果您擅长使用 LGPL/GPL 并且可以从源代码构建它(使用 GPL 您甚至可以下载预构建的二进制文件),那么 FFmpeg 是一个不错的选择,从 VS 进行接口需要一些努力但可行,更多的麻烦是缺乏文档,因此您需要在 Internet 上查找代码片段。

Media Foundation 是不行的:Windows XP 没有 Media Foundation H.264 解码器。然后 API 本身并不流行,它提供的唯一优势是在没有 DirectShow 的非桌面 Windows 版本上可用。

DirectShow 是 Windows 中最好的本机媒体 API。由于在 Windows 中向后兼容,因此可以在 Windows XP 到 Windows 8.1 之间使用。Microsoft 从 Windows Vista 开始提供了一个不错的 H.264 解码器 - Microsoft DTV-DVD Video Decoder,该解码器与通过 Media Foundation 提供的解码器版本相同。此类第三方解码器通常与 DirectShow 连接。有硬件辅助解码支持,网上有很多示例代码和教程。不过,学习曲线有点陡峭。