媒体基础:在没有容器的情况下解码和显示 H264 帧

Posted

技术标签:

【中文标题】媒体基础:在没有容器的情况下解码和显示 H264 帧【英文标题】:Media Foundation: Decoding and displaying H264 frames without a container 【发布时间】:2011-12-07 14:42:29 【问题描述】:

场景是这样的:我的 Windows 客户端应用程序以自定义方式(专有协议)从网络源获取 H264 编码帧,无需容器。帧的格式是已知的。我需要解码帧并显示视频。要求在高清流媒体期间播放完美无缺,但在其他场景中可以选择低延迟。

目前,我使用 ffmpeg 的 libavcodec 来解码帧,然后使用 StretchBlt 手动将它们显示在屏幕上。我们正在考虑迁移到 Media Foundation,但我不清楚 - 是否有可能拥有不使用容器的源?如果是这样,我需要创建一个自定义的吗?

也欢迎使用 Media Foundation 的替代方案。我目前使用的方法的主要问题是性能不够好,尤其是对于高清视频。

【问题讨论】:

【参考方案1】:

我没有看到你提到你特别需要或Media Foundation API,所以我建议DirectShow,你可以这样做:

自定义源,见Push Source Filters Sample H.264 解码器,配备 Windows 7(类似于 Media Foundation)或第三方(在几个之间选择) 视频渲染器,例如 EVR(与 Media Foundation 共享)或更早版本

【讨论】:

以上是关于媒体基础:在没有容器的情况下解码和显示 H264 帧的主要内容,如果未能解决你的问题,请参考以下文章

“无法解码媒体资源 FILEPATH/FILENAME.mp4。”尝试在 Firefox 35 上播放 h264 编码文件时

iOS8系统H264视频硬件编解码说明

iOS8系统H264视频硬件编解码说明

Windows MFT(媒体基础转换)解码器未返回正确的采样时间或持续时间

在android中解码原始H264流?

如何在 Android webRTC 上启用 H264