ffmpeg - 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 先生可以在这里帮助我。
解决方案
推荐阅读
- python - 读取文本文件中的每一行并将其动态保存在变量中
- python - 尝试使用窗口数据集训练 LSTM 模型时出错
- java - Hazelcast 复制地图:内存格式和序列化
- android - 设计 Cloud Firestore 以获取内部包含对象的对象
- flask - 如何使用 flask_sqlalchemy 正确注释类型?
- java - 如何将图像、文本、用户 ID 和时间戳上传到 Firebase Firestore?
- android - 模拟器未在 Android 4.0 中显示
- java - Flyway设置位置在java中
- .net - 通过 WebView2 将对象从 .NET 设置为 JavaScript 代码
- java - 为什么我的代码中没有调用 onSubmit?