日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【技术解决方案】优化FFmpeg编码器参数设置

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【技术解决方案】优化FFmpeg编码器参数设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FFmpeg?x264編碼參數對照表

x264

ffmpeg

說明

命令行

字段

命令行

字段

qp

qp_constant

cqp

cqp

固定量化因子。取值范圍0到51。

經常取值在20-40之間,越小質量

越好,要求的碼率越高。0表示無損壓縮

max-keyint

i_keyint_max

g

gop_size

關鍵幀的最大間隔幀數

min-keyint

i_keyint_min

keyint_min

關鍵幀的最小間隔幀數

level

i_level_idc

level

取值范圍10-51。

設置比特流的Level。默認40,即4.0。

用來告訴解碼器需要支持的什么級別的

兼容性。只有在你知道自己在做什么的

時候才設置該參數。

frameref

i_frame_reference

refs

B和P幀向前預測參考的幀數。取值范

圍1-16。

該值不影響解碼的速度,但是越大解碼

所需的內存越大。這個值在一般情況下

越大效果越好,但是超過6以后效果就

不明顯了。

bframes

i_bframe

max_b_frames

最大B幀數.

b-adapt

b_bframe_adaptive

b_frame_strategy

如果為true,則自動決定什么時候需要

插入B幀,最高達到設置的最大B幀數。

如果設置為false,那么最大的B幀數被

使用。

b-pyramid

b_bframe_pyramid

FLAGS2(CODEC_FLAG2_BPYRAMID)

當設置B幀>=2時候,通過開啟這個選

項可以獲得質量的略微提高,但是沒有

任何的速度損失。

b_deblocking_filter

FLAGS(CODEC_FLAG_LOOP_FILTER)

deblock

i_deblocking_filter_alphac0

deblockalpha

cabac

b_cabac

coder_type(FF_CODER_TYPE_AC)

使用CABAC熵編碼技術,為引起輕微的

編碼和解碼的速度損失,但是可以提高

10%-15%的編碼質量。

qmin

i_qp_min

qmin

最小的量化因子。取值范圍1-51。建

議在10-30之間。

qmax

i_qp_max?

qmax

最大的量化因子。取值范圍1-51。建

議在10-30之間。

qpstep

qp-step

i_qp_step

max_qdiff

最大的在幀與幀之間進行切變的量化

因子的變化量。

qcomp

f_qcompress

vbv-maxrate

i_vbv_max_bitrate

b

rc_max_rate

允許的最大碼流,x264里面以kbps為

單位,ffmpeg以bps為單位

vbv-bufsize

i_vbv_buffer_size

bufsize

rc_buffer_size?

在指定vbv-maxrate的時候必須設置

該字段。

vbv-init

f_vbv_buffer_init

rc_initial_buffer_occupancy

初始的緩存占用量

qcomp

f_qcompress

qcompress

量化器壓縮比率0-1.越小則比特率

越區域固定,但是越高越使量化器

參數越固定。

direct-pred

direct

i_direct_mv_pred

directpred

B幀里面采用的運動偵測的方式。

時間和空間方式大致PSNR和速度

是一致的。設置為auto質量會好一

些,但是速度會下降一些,設置為0

,質量和速度都會下降.可以選擇

none, auto, temporal, spatial.

weightb

weight-b

b_weighted_bipred

FLAGS2(CODEC_FLAG2_WPRED)

當B幀設置>1時使用

partitions

analyse

inter

X264_ANALYSE_I4x4

X264_ANALYSE_I8x8

X264_ANALYSE_PSUB16x16

X264_ANALYSE_PSUB8x8

X264_ANALYSE_BSUB16x16

8x8dct

b_transform_8x8

FLAGS(CODEC_FLAG2_8X8DCT)

me

i_me_method

me_method

運動偵測的方式

ME_EPZS

ME_HEX

ME_UMH

ME_FULL

ME_ESA

me-range

merange

i_me_range

me_range

運動偵測的半徑

subq

subme

i_subpel_refine

me_subpel_quality

這個參數控制在運動估算過程中質

量和速度的權衡。Subq=5可以壓

縮>10%于subq=1。1-7

mixed-refs

b_mixed_references

FLAGS2(CODEC_FLAG2_MIXED_REFS)

允許8*8,16*8運動塊獨立地選擇

參考幀,如果disable,則所有的宏

塊必須參考同一幀。

需要frameref > 1

brdo

b_bframe_rdo

FLAGS2(CODEC_FLAG2_BRDO)

需要subq>6

bime

b_bidir_me

bidir_refine

取值范圍:true,false.這個值在沒

有B幀的時候失效。在雙向預測宏塊中

雙向運動矢量使用。

trellis

i_trellis

trellis

deadzone-intra

i_luma_deadzone

沒有對應值

deadzone-inter

i_luma_deadzone

沒有對應值

fast-pskip

b_fast_pskip

FLAGS(CODEC_FLAG2_FASTPSKIP)

在P幀內執行早期快速跳躍探測。

這個經常在沒有任何損失的前提

下提高了速度。

dct-decimate

b_dct_decimate

沒有對應值

nr

i_noise_reduction

noise_reduction

0意味著關閉,對于噪聲很大的

內容你需要打開。

范圍:0-100000

interlaced

b_interlaced

沒有對應值

global-header

b_repeat_headers

FLAGS(CODEC_FLAG_GLOBAL_HEADER)

使得SPS和PPS只在流的開始處

產生一次。有些播放器,如SONY

的PSP需要開啟此參數。默認的設

置使得SPS和PPS在每一個IDR幀

開始出都進行重復。

aud

b_aud

FLAGS2(CODEC_FLAG2_AUD)

threads

i_threads

thread_count

將幀切分成塊,由不同的線程進行

分別編碼。0-4。

0 for auto

rc-eq

psz_rc_eq

rc_eq

--no-psnr

b_psnr

FLAGS(CODEC_FLAG_PSNR)

是否開啟PSNR.

--no-ssim

b_ssim

沒有對應值

--progress

b_progress

沒有對應值

--bitrate

i_bitrate

b

bit_rate

編碼輸出的比特率,并啟用

ABR(Average Birtate?模式(i_rc_method),

qblur

f_qblur

qblur

f_complexity_blur

complexityblur

?參數詳細解釋

?bit_rate = 200000, //?目標碼率,采樣碼率越大,目標文件越大

?bit_rate_tolerance= 8000000 //?碼率誤差,允許的誤差越大,視頻越小

gop_size = 300 //多少幀內出現1個I幀

qmin =? 30 //?最小量化系數

qmax = 50 //最大量化系數

max_b_frames = 300 //兩個非B幀之間允許出現的最多b幀數。

i_quant_factor = 0.1 //? i?幀相對p幀的量化系數比,?值越小?,?p幀的量化系數越大,視頻越小

b_quant_factor = 4.9 // b?幀相對p幀的量化系數比,值越大,b幀的量化系數越大,視頻越小

Ps.B幀量化系數=b_quant_factor* p幀量化系數+b_quant_offset

?--preset的參數主要調節編碼速度和質量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo這10個選項,從快到慢。?

?--tune的參數主要配合視頻類型和視覺優化的參數,或特別的情況。如果視頻的內容符合其中一個可用的調整值又或者有其中需要,則可以使用此選項,否則建議不使用(如tune grain是為高比特率的編碼而設計的)。

tune的值有:?

film:? ? ? ? ? ? ? 電影、真人類型;?

animation:? ? 動畫;?

grain:? ? ? ? ? ? 需要保留大量的grain時用;?

stillimage:? ? ?靜態圖像編碼時使用;?

psnr:? ? ? ? ? ? 為提高psnr做了優化的參數;?

ssim:? ? ? ? ? ?為提高ssim做了優化的參數;?

fastdecode: 可以快速解碼的參數;?

zerolatency:零延遲,用在需要非常低的延遲的情況下,比如電視電話會議的編碼。

一般發送網絡流都需要增加這兩個參數,否則播放圖像的延時很大。

?如果用代碼,可以這樣設置:

?/**?

?*?ultrafast,superfast,?veryfast,?faster,?fast,?medium?

?*?slow,?slower,?veryslow,?placebo.?

?*/??

AVDictionary?*param?=?0;??av_dict_set(&param,?"preset",?"fast",?0);?//?av_opt_set(pCodecCtx->priv_data,"preset","fast",0);??av_dict_set(&param,?"tune",?"zerolatency",?0); ?

畫質,分別是baseline, extended, main, high

????????????????? 1、BaselineProfile:基本畫質。支持I/P?幀,只支持無交錯(Progressive)和CAVLC;

????????????????? 2、Extendedprofile:進階畫質。支持I/P/B/SP/SI?幀,只支持無交錯(Progressive)和CAVLC;(用的少)

????????????????? 3、Main profile:主流畫質。提供I/P/B幀,支持無交錯(Progressive)和交錯(Interlaced),也支持CAVLC?和CABAC?的支持;

????????????????? 4、High profile:高級畫質。在mainProfile?的基礎上增加了8x8內部預測、自定義量化、無損視頻編碼和更多的YUV?格式;

  ???????? H.264 Baseline profile、Extended profile和Main profile都是針對8位樣本數據、4:2:0格式(YUV)的視頻序列。在相同配置情況下,

????????????????? Highprofile(HP)可以比Main profile(MP)降低10%的碼率。根據應用領域的不同,Baseline profile多應用于實時通信領域,

????????????????? Mainprofile多應用于流媒體領域,High profile則多應用于廣電和存儲領域。

? ? ? ? ? ? ? ? ?//av_dict_set(&param, "profile","main", 0); ?

?如何設置固定碼率編碼 ?
?bit_rate是平均碼率,不一定能控制住
?AVCodecContext* pCodecCtx;
?//...
?pCodecCtx->bit_rate = 400000;
?pCodecCtx->rc_max_rate = 400000;
?pCodecCtx->rc_min_rate = 400000;
?提示? [libx264 @ 00c70be0] VBV maxrate specified, but no bufsize, ignored
?再設置? pCodecCtx->rc_buffer_size = 200000;? 即可。如此控制后編碼質量明顯差了。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【技术解决方案】优化FFmpeg编码器参数设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。