压缩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;

时间: 2024-10-25 14:28:51

压缩xvid ffmpeg x264 对比的相关文章

基于v4l2 ffmpeg x264的视频远程监控(附上编译好的库文件)

说明:主要是基于ghostyu网友整理的< arm mini2440 基于v4l2 ffmpeg x264的视频远程监控>.自己做了一遍,遇到不少问题,就整理记录下来.   1.平台 硬件:arm mini2440,usb摄像头(UVC免驱) 软件:ubuntu12.10,arm-Linux-gcc v4.4.3   2.源文件 功能体验包:http://download.csdn.net/detail/kangear/5202160 -----------------------------

FFmpeg 编码 avcodec_open2 x264 memory leak

问题描述 FFmpeg 编码 avcodec_open2 x264 memory leak 开发平台 : Mac OS X EI Capitan 10.11.4 Xcode Version 7.3 iOS 9.3 代码 : // x264 参数 double crf = 23; int qmin = 12;// 最小的量化因子.取值范围0-69. int qmax = 18;// 最大的量化因子.取值范围13-69. int keyint = 16; int scenecut = 0; // s

ffmpeg在am335x上的移植

交叉编译工具:arm-linux-gcc 一.先下载一下文件 1. yasm-1.2.0.tar.gz 2. x264-snapshot-20140424-2245.tar.bz2 3. xvidcore-1.1.3.tar.gz 4. SDL-1.2.15.tar.gz 5.  ffmpeg-1.2.2.tar.gz 链接如下 1. yasm-1.2.0.tar.gz http://download.csdn.net/detail/zengzhihao/7677671 2. x264-snap

WPS 2005自动压缩图片功能

在使用WPS Office 2005时,出于内容和美观的需要,用户在文档中添加了一些图片,发现仅是几页的内容竟然有10M以上,经查是由于插入的图片没有被压缩,最终导致整个文件非常庞大. WPS Office 2005为用户提供了非常强大的"图片压缩"功能,利用此功能将大大减小文档的大小,便于进行交流.下面以WPS文字中的压缩图片的功能为例进行说明. 启动图片工具栏 启动WPS 文字,打开需要进行处理的文件,选中任意一张图片,弹出"图片"工具栏,如图 1所示: 图1

金山WPS Office 2005自动压缩图片

在使用wps Office 2005时,出于内容和美观的需要,用户在文档中添加了一些图片,发现仅是几页的内容竟然有10M以上,经查是由于插入的图片没有被压缩,最终导致整个文件非常庞大. WPS Office 2005为用户提供了非常强大的"图片压缩"功能,利用此功能将大大减小文档的大小.下面以WPS文字中的压缩图片的功能为例进行说明. 启动图片工具栏 启动WPS 文字,打开需要进行处理的文件,选中任意一张图片,弹出"图片"工具栏,压缩图片对话框选项值的选择 单击&q

COLOURCO在线图片压缩神器和配色工具怎么样

  今天和大家分享一个功能齐全.简单易用的在线配色工具网站Colour code,另外附上一个亲自实践后,感觉效果胜过TinyPNG的在线图片压缩网站,进来加书签吧 Colourco.de . 颜色变化 色调:鼠标左右移动或[Ctrl+ ← + →] 亮度:鼠标上下移动或[Ctrl + ↑ + ↓] 饱和度:[Ctrl+ Shift + ↑ + ↓] 鼠标单击锁定颜色,点击"垃圾桶"图标删除颜色.此外还有一些不错的配色方案,自己慢慢体验哦! 图01 图02 图03 图04 笔者想有很多

对比iOS网络组件:AFNetworking VS ASIHTTPRequest

在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等. 那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?几乎每一个iOS互联网应用开发者都会面对这样的选择题,要从这两个最常用的组件里选出一个好的还真不是那么容易

Linux下ffmpeg安装与开发配置

Linux下ffmpeg安装与开发配置   1. ffmpeg安装 安装环境: ubuntu 12.04 (1)删除已安装的文件,避免冲突 sudo apt-get remove ffmpeg x264 sudo apt-get autoremove (2)安装需要的支持 sudo apt-get install make automake g++ bzip2 python unzip patch subversion ruby build-essential git-core checkins

视音频编解码基本术语及解释

         整理了一些基本视音频术语,用于入门和查询使用. H264: H264是视频的标准,是MPEG4-10,基于内容的高效编码方式. H.264/MPEG-4第10部分,或称AVC(AdvancedVideo Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制.压缩和发布格式.第一版标准的最终草案于2003年5月完成. H.264/MPEG-4 AVC是一种面向块的基于运动补偿的编解码器标准.由ITU-T视频编码专家组与ISO/IEC联合工作组--即动