ffmpeg api codec 設(shè)置gop
設(shè)置GOP(Group of Pictures)參數(shù)可以在視頻編碼時(shí)控制幀率和視頻質(zhì)量。在FFmpeg API中,可以使用AVCodecContext結(jié)構(gòu)體的gopsize和keyintmin等成員變量來(lái)設(shè)置GOP參數(shù)。
例如,以下代碼片段將GOP大小設(shè)置為30幀:
AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_H264); AVCodecContext *codec_ctx = avcodec_alloc_context3(codec); // 設(shè)置其他編碼器參數(shù) codec_ctx->gop_size = 30; avcodec_open2(codec_ctx, codec, NULL);
此外,還可以使用AVDictionary對(duì)象通過(guò)鍵值對(duì)的方式設(shè)置更多的編碼器參數(shù),例如:
AVDictionary *codec_opts = NULL; av_dict_set(&codec_opts, "gop_size", "30", 0); av_dict_set(&codec_opts, "keyint_min", "15", 0); avcodec_open2(codec_ctx, codec, &codec_opts);
這里設(shè)置了GOP大小和最小關(guān)鍵幀間隔,編碼器將嘗試在每30幀之間生成一個(gè)I幀(關(guān)鍵幀),并且不會(huì)在兩個(gè)關(guān)鍵幀之間生成少于15幀的B或P幀。
相關(guān)學(xué)習(xí)資料推薦,點(diǎn)擊下方鏈接免費(fèi)報(bào)名,先碼住不迷路~】
音視頻免費(fèi)學(xué)習(xí)地址:FFmpeg/WebRTC/RTMP/NDK/Android音視頻流媒體高級(jí)開(kāi)發(fā)
【免費(fèi)分享】音視頻學(xué)習(xí)資料包、大廠面試題、技術(shù)視頻和學(xué)習(xí)路線圖,資料包括(C/C++,Linux,F(xiàn)Fmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點(diǎn)擊788280672加群免費(fèi)領(lǐng)取~
