dedecms网站制作教程,做网站买好域名怎么办,网站永久镜像怎么做,wordpress手机浏览如有转载请注明出处#xff1a;孔祥文博客http://kswapd.cublog.cn
Xvid是基于MPEG4协议的编解码器#xff0c;x264是基于H.264协议的编码器#xff0c;ffmpeg集合了各种音频#xff0c;视频编解码协议#xff0c;通过设置参数可以完成基于MPEG4,H.264等协议的编解码孔祥文博客http://kswapd.cublog.cn
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
视频解码
解码器视频所用的编码器解码时间()输出视频格式 XvidXvid0.47yuyv Xvidffmpeg0.50yuyv ffmpeg(mpeg4)Xvid 0.26yv12 ffmpeg(mpeg4)ffmpeg(mpeg4)0.31 yv12 ffmpeg(h.264)ffmpeg(h.264)0.45yv12 ffmpeg(h.264)X2640.78yuyv
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; // . 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_frames0; c-pix_fmt PIX_FMT_YUV420P;