如何解码原始H264帧

4
我需要开发一个全屏客户端,从网络源解码原始h264帧。您有什么建议的方法可以让我开始吗?我正在考虑使用ffmpeg,但是我需要将其与VS接口,并且我会在那里迷失方向。 微软媒体基础架构具有内置的h264解码器,但是没有足够简单易懂的示例供我理解。 同样的情况也出现在DirectShow中,但微软表示它是过时技术,请勿使用。 客户端应该能够在WinXP及以上目标上运行。 如果任何人能够指点我正确的方向,那就太好了。
1个回答

5
您正确列出了选项,并且说得很对,没有简单的例子。技术本身有点复杂,通常不是单独使用,而是作为更复杂系统的一部分,例如流媒体客户端。此外,该技术并非免费,也没有广泛可用的“默认”H.264解码器实现。
如果您可以接受LGPL/GPL并且可以从源代码构建它(使用GPL,甚至可以下载预编译二进制文件),则FFmpeg是一个不错的选择。从VS进行接口需要一些努力,但是可行的,更麻烦的是缺乏文档,因此您需要在互联网上寻找代码片段。
Media Foundation不适用:Windows XP没有Media Foundation H.264解码器。然后API本身并不流行,它唯一提供的优势是在没有DirectShow的非桌面Windows版本上可用。

DirectShow是Windows中最好的本地媒体API。它具有向后兼容性,在Windows XP到Windows 8.1中都可用。自Windows Vista起,Microsoft提供了一个不错的H.264解码器-Microsoft DTV-DVD视频解码器,在同一版本中,该解码器也可通过Media Foundation使用。第三方解码器通常与DirectShow进行接口。有硬件辅助解码支持,在互联网上有很多示例代码和教程。但学习曲线有点陡峭。


1
我用 ffmpeg 完成了工作。 输入网络流 -> FFMPEG -> SDL(将视频绘制到屏幕上)。 在 1280x720@30fps,比特率为 3mbps 的情况下延迟约为 200ms :) - user2967920

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接