自定义 h.264 流在某些硬件解码器中中断

Posted

技术标签:

【中文标题】自定义 h.264 流在某些硬件解码器中中断【英文标题】:Custom h.264 streams broken in some hardware decoders 【发布时间】:2021-11-13 10:48:15 【问题描述】:

我一直在用头撞墙。我正在研究一种将数据编码为有效 h.264 流的机制。我已经让它工作了,它可以使用 mplayer、celluloid 和 vlc(软件、VA-API 和带有 DRM 的 VA-API)和 ffmpeg 等工具进行播放。 ffmpeg 甚至可以重新打包,一切都很好。

但是,在使用硬件解码(例如 VDPAU)的情况下,它根本不起作用。

这在 Windows 上也适用!

这可以在这里的示例代码中看到:https://www.cardinalpeak.com/blog/worlds-smallest-h-264-encoder

我正在使用的代码稍微复杂一些,并且在 ffmpeg 中只有时间戳警告,https://github.com/cnlohr/h264fun/blob/dfa95a6ed0b669fe1e15d67cd3cbd45ac24cc79d/testbase.c

但我担心的一些事情是硬件解码是否支持 I_PCM,或者什么可能触发问题?

【问题讨论】:

【参考方案1】:

我的系统上的 Linux 中的 VDPAU 中似乎出现了问题。其他一些绝对有效的 H.264 流没有播放,我已经测试了我的应用程序,它可以在所有 Windows、android 等播放器中运行。

【讨论】:

以上是关于自定义 h.264 流在某些硬件解码器中中断的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 上使用硬件加速视频解码?

媒体基础自定义拓扑 E_FAIL

ffmpeg 使用 Nvidia 硬件编码器编码 H.264

某些解码器的 H.264 帧内存泄漏

自定义函数中断

VideoToolbox硬件编解码H.264视频流错误码