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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

压缩xvid ffmpeg x264 对比

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 压缩xvid ffmpeg x264 对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

壓縮xvid ffmpeg x264 對比


Xvid是基于MPEG4協議的編解碼器,x264是基于H.264協議的編碼器,ffmpeg集合了各種音頻,視頻編解碼協議,通過設置參數可以完成基于MPEG4,H.264等協議的編解碼,現在將其對比結果羅列如下:

1.軟件版本:
?????? Xvid:1.2.1
?????? x264:無
?????? ffmpeg:0.5


2. 視頻樣本 foreman.cif 300幀,大小352x288

3. 所選用編解碼器:? xvid, x264, ffmpeg

4. 視頻流比特率設定 : 1000kbps.

5. 測試結果:
??? ???
?編碼器? 編碼時間(s) 視頻編碼后大小(B) 比特率(kbps) 輸入視頻格式

??? Xvid?????????? 0.98??? ??? 1779213??? ??? 1.18??? ??? yuyv
???
??? X264?????????? 2.2??? ???? 1788824??? ??? 1.19??? ??? yv12

?ffmpeg(mpeg4 協議) 0.76??? ??? 1754847??? ??? 1.17??? ??? yv12
???
? ffmpeg(h.264協議) 4.38??? ??? 1741733??? ??? 1.16??? ??? yv12

??? 解碼器??? ? 視頻所用的編碼器??? 解碼時間(s)??? 輸出視頻格式

??? Xvid??? ??? ?????? Xvid??? ??? ???? 0.47??? ??? yuyv
???
??? Xvid ??? ??? ????? ffmpeg ??? ?? ?? 0.50??? ??? yuyv

??? ffmpeg(mpeg4)??? ? Xvid??? ??? ???? 0.26??? ??? yv12

??? ffmpeg(mpeg4)??? ?? ffmpeg(mpeg4)??? 0.31??? ??? yv12

??? ffmpeg(h.264)??? ??? ffmpeg(h.264)??? 0.45??? ??? yv12

??? ffmpeg(h.264)??? ??? X264??? ??? ???? 0.78??? ??? yuyv
???
???

6.結論

??? 從以上可以看出:

??? 1).??? 對于基于MPEG4協議的編解碼,ffmpeg的效率都要高于Xvid,主要原因應該是Xvid是以保存視頻效果為首要出發點的,其對視頻質量的保存應該是做的最好的,這就在一定程度上增加了編解碼的復雜性,影響了速度的提升。

??? 2). ?? 對于基于H.264協議的編解碼,由于ffmpeg沒有本身的h.264編碼器,其H.264協議編碼是調用x264的編碼庫來完成的,所以其性能本質上還是x264的,只不過ffmpeg對其進行了封裝,但從數據對比可以看出,在本次實驗中,ffmpeg調用x264庫編碼用了4.38秒,遠遠高于 x264的2.2秒,這主要應該是ffmpeg調用x264庫時對其進行了不同的參數設置,當然對x264進行接口的封裝也會影響一部分性能,但應該不是主要的,主要的應該還是調用x264時,參數有些不同。

??? 所以如果做基于MPEG4的編解碼,如果對速度要求高的話,ffmpeg是很好用的工具。
??? 對于H.264協議來說,ffmpeg能很好的解碼,而編碼的話最好還是要調用x264,因為ffmpeg還沒有實現H.264的編碼。

附:各編解碼器參數設定:
?? ?Xvid:?? ??? ?
?? ?xvid_enc_create_obj.version = XVID_VERSION;
??????? xvid_enc_create_obj.max_key_interval = 100;? //must mark it !!
??????? xvid_enc_create_obj.profile = 0xf5;//XVID_PROFILE_S_L0;
??????? xvid_enc_create_obj.fincr = 1;
??????? xvid_enc_create_obj.fbase = 25;??????? //must set for bitrate kxw
??????? xvid_enc_create_obj.num_threads = 0;
??????? xvid_enc_create_obj.global = 0;
??????? xvid_enc_create_obj.plugins = plugins;
??????? xvid_enc_create_obj.num_plugins = 1;
?? ?
??? ??????????? memset(&plugin_single, 0, sizeof(xvid_plugin_single_t));
??????????????? plugin_single.version = XVID_VERSION;
??????????????? plugin_single.bitrate = bitrate * 1024; // 1000*1024
??????????????? plugin_single.reaction_delay_factor = 16;
??????????????? plugin_single.averaging_period = 100;
??????????????? plugin_single.buffer = 100;
??????????????? plugins[0].func = xvid_plugin_single;
??????????????? plugins[0].param = &plugin_single;
???
??? X264:

?param->cpu = X264_CPU_MMXEXT|X264_CPU_SSE|X264_CPU_SSE2;//0x177a;//x264_cpu_detect();
??? param->i_threads = 1;
??? param->b_deterministic = 1;

??? /* Video properties */
??? param->i_csp?????????? = X264_CSP_I420;
??? param->i_width???????? = 0;
??? param->i_height??????? = 0;
??? param->vui.i_sar_width = 0;
??? param->vui.i_sar_height= 0;
??? param->vui.i_overscan? = 0;? /* undef */
??? param->vui.i_vidformat = 5;? /* undef */
??? param->vui.b_fullrange = 0;? /* off */
??? param->vui.i_colorprim = 2;? /* undef */
??? param->vui.i_transfer? = 2;? /* undef */
??? param->vui.i_colmatrix = 2;? /* undef */
??? param->vui.i_chroma_loc= 0;? /* left center */
??? param->i_fps_num?????? = 25;
??? param->i_fps_den?????? = 1;
??? param->i_level_idc???? = -1;

??? /* Encoder parameters */
??? param->i_frame_reference = 1;
??? param->i_keyint_max = 250;
??? param->i_keyint_min = 25;
??? param->i_bframe = 0;??? ??? ??? ??? //no b frame.
??? param->i_scenecut_threshold = 40;
??? param->i_bframe_adaptive = X264_B_ADAPT_FAST;
??? param->i_bframe_bias = 0;
??? param->b_bframe_pyramid = 0;

??? param->b_deblocking_filter = 1;
??? param->i_deblocking_filter_alphac0 = 0;
??? param->i_deblocking_filter_beta = 0;
??? param->b_cabac = 1;
??? param->i_cabac_init_idc = 0;

??? param->rc.i_rc_method = X264_RC_ABR;?? //kxw notice!
??? param->rc.i_bitrate = 0;
??? param->rc.f_rate_tolerance = 1.0;
??? param->rc.i_vbv_max_bitrate = 0;
??? param->rc.i_vbv_buffer_size = 0;
??? param->rc.f_vbv_buffer_init = 0.9;
??? param->rc.i_qp_constant = 26;??? //??????????? default QP = 26...........kxw mod
??? param->rc.f_rf_constant = 0;
??? param->rc.i_qp_min = 10;
??? param->rc.i_qp_max = 51;
??? param->rc.i_qp_step = 4;
??? param->rc.f_ip_factor = 1.4;
??? param->rc.f_pb_factor = 1.3;
??? param->rc.i_aq_mode = X264_AQ_VARIANCE;
??? param->rc.f_aq_strength = 1.0;
??? param->rc.b_stat_write = 0;
??? //param->rc.psz_stat_out = "x264_2pass.log";
??? param->rc.b_stat_read = 0;
??? //param->rc.psz_stat_in = "x264_2pass.log";
??? param->rc.f_qcompress = 0.6;
??? param->rc.f_qblur = 0.5;
??? param->rc.f_complexity_blur = 20;
??? param->rc.i_zones = 0;

??? /* Log */
??? param->pf_log = NULL;//x264_log_default;//x264_log_default;
??? param->p_log_private = NULL;
??? param->i_log_level = X264_LOG_INFO;
???
??? #if 0??????????????????????????????????????????????? //consume time .kxw mod
??? param->analyse.intra = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8;
??? param->analyse.inter = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8
???????????????????????? | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_BSUB16x16;
#endif
??? param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_SPATIAL;
??? param->analyse.i_me_method = X264_ME_HEX;
??? param->analyse.f_psy_rd = 1.0;
??? param->analyse.f_psy_trellis = 0;
??? param->analyse.i_me_range = 16;

#if 0
??? param->analyse.i_subpel_refine = 100;? //consume time so much!! kxw mod
#endif
??? param->analyse.b_chroma_me = 1;

??? param->analyse.i_mv_range_thread = -1;
??? param->analyse.i_mv_range = -1; // set from level_idc

??? param->analyse.i_chroma_qp_offset = 0;
??? param->analyse.b_fast_pskip = 1;
??? param->analyse.b_dct_decimate = 1;

??? param->analyse.i_luma_deadzone[0] = 21;
??? param->analyse.i_luma_deadzone[1] = 11;

??? param->analyse.b_psnr = 1;
??? param->analyse.b_ssim = 1;

??? param->i_cqm_preset = X264_CQM_FLAT;


??? ?x264_param.rc.i_bitrate = br;?? //target bitrate. 1000
??????? x264_param.i_width = width;
??????? x264_param.i_height = height;

ffmpeg:

??? c->bit_rate = 1000000;
??? /* resolution must be a multiple of two */
??? c->width = FRAMEE_WIDTH;
??? c->height = FRAME_HEIGHT;
??? /* frames per second */
??? c->time_base= (AVRational){1,25};
??? c->gop_size = 250; /* emit one intra frame every ten frames */
??? c->max_b_frames=0;
??? c->pix_fmt = PIX_FMT_YUV420P;




X264電影壓縮率畫質全對比:http://www.mov8.com/dvd/freetalk_show.asp?id=29778

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

總結

以上是生活随笔為你收集整理的压缩xvid ffmpeg x264 对比的全部內容,希望文章能夠幫你解決所遇到的問題。

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