首页 > 解决方案 > FFMPEG mpeg2_qsv 编码器 idr_interval 属性未通过 av_set_opt 公开

问题描述

我通过 FFMPEG 的 libav* api 使用 ffmpeg-4.4-full_build-shared 从我的应用程序生成符合 DVB 的多播 rtp 流。当我使用 mpeg2video 编码器和 h264_qsv 时,一切似乎都正常。但是 mpeg2_qsv 编码器没有设置默认为 0 的 idr_interval 属性。根据 Intel 的 Media SDK 文档,0 意味着 IDR 帧将仅在开始时发送。

如果我在流开始之前启动 VLC,它会在 VLC 获取 IDR 帧时正常工作,但如果我在流启动后启动 VLC,VLC 调试会显示 - mpegvide : waiting for sequence start。

我尝试深入研究 ffmpeg 源代码,据我所知,qsvenc_mpeg2.c 文件中没有启用 idr_interval

https://github.com/Vincit/ffmpeg/blob/master/libavcodec/qsvenc_mpeg2.c#L65

就像在 qsvenc_h264.c 中启用一样

https://github.com/Vincit/ffmpeg/blob/master/libavcodec/qsvenc_h264.c#L69

谢谢你的病人。任何指导将不胜感激。

PS:我真的很害怕自己编译ffmpeg的想法。试过一次,但性能并不是那么好。如果需要的话,也许 Gyan 先生可以在这里帮助我。

标签: ffmpeglibavcodecmpeg2-tsdvb

解决方案


推荐阅读