压缩xvid ffmpeg x264 对比
壓縮xvid ffmpeg x264 對比
Xvid是基于MPEG4協(xié)議的編解碼器,x264是基于H.264協(xié)議的編碼器,ffmpeg集合了各種音頻,視頻編解碼協(xié)議,通過設(shè)置參數(shù)可以完成基于MPEG4,H.264等協(xié)議的編解碼,現(xiàn)在將其對比結(jié)果羅列如下:
1.軟件版本:
?????? Xvid:1.2.1
?????? x264:無
?????? ffmpeg:0.5
2. 視頻樣本 foreman.cif 300幀,大小352x288
3. 所選用編解碼器:? xvid, x264, ffmpeg
4. 視頻流比特率設(shè)定 : 1000kbps.
5. 測試結(jié)果:
??? ???
?編碼器? 編碼時間(s) 視頻編碼后大小(B) 比特率(kbps) 輸入視頻格式
??? Xvid?????????? 0.98??? ??? 1779213??? ??? 1.18??? ??? yuyv
???
??? X264?????????? 2.2??? ???? 1788824??? ??? 1.19??? ??? yv12
?ffmpeg(mpeg4 協(xié)議) 0.76??? ??? 1754847??? ??? 1.17??? ??? yv12
???
? ffmpeg(h.264協(xié)議) 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.結(jié)論
??? 從以上可以看出:
??? 1).??? 對于基于MPEG4協(xié)議的編解碼,ffmpeg的效率都要高于Xvid,主要原因應(yīng)該是Xvid是以保存視頻效果為首要出發(fā)點的,其對視頻質(zhì)量的保存應(yīng)該是做的最好的,這就在一定程度上增加了編解碼的復(fù)雜性,影響了速度的提升。
??? 2). ?? 對于基于H.264協(xié)議的編解碼,由于ffmpeg沒有本身的h.264編碼器,其H.264協(xié)議編碼是調(diào)用x264的編碼庫來完成的,所以其性能本質(zhì)上還是x264的,只不過ffmpeg對其進(jìn)行了封裝,但從數(shù)據(jù)對比可以看出,在本次實驗中,ffmpeg調(diào)用x264庫編碼用了4.38秒,遠(yuǎn)遠(yuǎn)高于 x264的2.2秒,這主要應(yīng)該是ffmpeg調(diào)用x264庫時對其進(jìn)行了不同的參數(shù)設(shè)置,當(dāng)然對x264進(jìn)行接口的封裝也會影響一部分性能,但應(yīng)該不是主要的,主要的應(yīng)該還是調(diào)用x264時,參數(shù)有些不同。
??? 所以如果做基于MPEG4的編解碼,如果對速度要求高的話,ffmpeg是很好用的工具。
??? 對于H.264協(xié)議來說,ffmpeg能很好的解碼,而編碼的話最好還是要調(diào)用x264,因為ffmpeg還沒有實現(xiàn)H.264的編碼。
附:各編解碼器參數(shù)設(shè)定:
?? ?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電影壓縮率畫質(zhì)全對比:http://www.mov8.com/dvd/freetalk_show.asp?id=29778
總結(jié)
以上是生活随笔為你收集整理的压缩xvid ffmpeg x264 对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云闪付app怎么删除常用转账人?云闪付转
- 下一篇: 【黑苹果】宏基Acer Predator