FFmpeg 使用HEVC_QSV编码时仅发送一次PPS问题的解决方法

可以通过ffmpeg设置的Intel Qsv参数
https://blog.csdn.net/NB_vol_1/article/details/78362701?utm_source=blogxgwz3


 使用最新版本的(3.2.1)的FFmpeg进行HEVC_QSV编码的时候,只会在开始的时候发送一次PPS,在之后的编码过程中都不在发送PPS,这导致了需要播流的播放器需先打开,再启动FFmpeg进行推流,否则只能播放出声音,没有画面。

       FFmpeg 是基于Intel Media SDK来实现HEVC_QSV的,查看了Intel Media SDK的相关文档,发现PPS的发送时机是由参数IdrIntelval这个参数控制的。这个参数的含义及其变态,下面是摘自《mediasdk-man.pdf》中的一段描述,在H264_QSV和HEVC_QSV中,对IdrInterval设置相同的值,但是表示的含义截然不同。

      、    回过头来看一下FFmpeg中是如何设置IdrInterval的值的;仅在H264_QSV的时候可以通过命令设置IdrInterval,且默认值为0,所以H264_QSV在编码的时候当遇到I帧的时候就会把它当做IDR帧,发送PPS信息;在HEVC_QSV时,IdrInterval的值也被设置为0(具体FFmpeg内部怎么处理的,让IdrInterval在HEVC_QSV的时候也为0,大家可以自己去 看一下代码),但此时0表示的含义是只把第一个I帧当做IDR帧来使用,所以只会在最开始发送PPS的信息。所以仅需要在HEVC_QSV编码时设置IdrInterval为1即可

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值