1. 程式人生 > >FFMPEG H264/H265 編碼延遲問題

FFMPEG H264/H265 編碼延遲問題

最新使用FFmpeg進行H264的編碼時,發現視訊編碼有延遲,不是實時編碼,進過一番研究發現,只要在呼叫avcodec_open2函式

開編碼器時,設定AVDictionary引數即可,關鍵程式碼如下:

avcodec_open2函式:

int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);

解決方案:
AVDictionary *param = NULL;	
//H264, 設定為編碼延遲為立即編碼
if(c->codec_id == AV_CODEC_ID_H264)
{  
	av_dict_set(¶m, "preset", "superfast",   0);
	av_dict_set(¶m, "tune",   "zerolatency", 0);
}  
//H.265  
if(c->codec_id == AV_CODEC_ID_H265)
{  
	av_dict_set(¶m, "x265-params", "qp=20", 0); 
	av_dict_set(¶m, "preset", "ultrafast", 0);  
	av_dict_set(¶m, "tune", "zero-latency", 0); 
}  

//使用給定的AVCodec初始化AVCodecContext
ret = avcodec_open2(引數, 引數, ¶m);