【问题标题】:How to go about decoding raw H264 frames如何解码原始 H264 帧
【发布时间】:2013-12-03 23:19:50
【问题描述】:

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

【问题讨论】:

    标签: video ffmpeg directshow h.264 decoding


    【解决方案1】:

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

    如果您愿意使用 LGPL/GPL 并且可以从源代码构建它(使用 GPL,您甚至可以下载 prebuilt binaries),FFmpeg 是一个不错的选择,从 VS 接口需要一些努力但可行,更多的是问题是缺少文档,所以你需要在网上寻找代码sn-ps。

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

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

    【讨论】:

    • 我用 ffmpeg 完成了工作。输入网络流 -> FFMPEG -> SDL(在屏幕上绘制视频)对于 1280x720@30fps 的比特率为 3mbps 的延迟约为 200ms :)
    猜你喜欢
    • 2014-02-06
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2014-10-25
    • 2014-01-26
    • 1970-01-01
    • 2015-12-30
    • 2019-02-17
    相关资源
    最近更新 更多