`
chilongxph
  • 浏览: 135756 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ffmpeg转换参数和对几种视频格式的转换分析

阅读更多
  日志源地址:http://j2ee.blog.sohu.com/79718171.html

  我们在将多种格式的视频转换成flv格式的时候,我们关注的就是转换后的flv视频的品质和大小。下面就自己的实践所得来和大家分享一下,主要针对avi、3gp、mp4和wmv四种格式来进行分析。通常在使用ffmpeg进行视频转换的时候我们使用到的控制音视频的主要参数有如下:
-ab      bitrate      设置音频码率
-acodec  codec        使用codec编解码
-ac      channels     设置通道,缺省为1
-ar      freq         设置音频采样率
-r       fps          设置帧频,缺省25
-b       bitrate      设置比特率,缺省200kb/s
-qscale  6或4         使用动态码率来设置
    对于其他诸如-i、-y、-s等参数基本上都是可以很好理解的了。我们上面提到的几个参数前四个主要是用来设置音频的,后三个主要是用来设置视频的。对于音频的ar(采样率)可以指定为22050、24000、44100或48000,一般来将后两种比较常见;对于音频的ab(码率)一般是选择32、64、96或128这几种;对音频的acodec则是指定编码方式,可以指定为libmp3lame或aac等,这两种分别是指使用mp3和aac格式的音频。在实际的测试过程中我发现在使用mp3进行音频编码时指定ab为64或更高和指定ar为22050或更高对实际的视频音质没有什么大的影响,请参见后面的测试结果。

    对于视频的r用来指定帧频,一般设置为29.97;对于视频的b(视频的比特率)可以指定如128、314等数字,对于1500以上则没有效果;对于视频的qscale,属于动态码率,可以设置为4或6,4的质量比6的要高。在测试的过程中我发现设置-b参数对视频的质量并没有过大的改变(指定大指定小都差不多或是一样),而设置qscale则完全不一样,如果我们想获取高品质的话应该使用动态码率而不是指定-b参数,当然了,使用动态码率的坏处就是视频的体积变大了。在使用动态码率的时候使用6的效果和4差不多,但是体积减少了,因此通常建议使用6来设置动态码率。

    上面介绍了转换过程中的音视频的配置参数,综合上面,我们在转换的时候通常的命令如下:
高品质:ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y outfile
低品质:ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -b 512 -y outfile

使用这两个命令测试四种格式的视频结果如下,同时在测试的过程中会改变相应的参数进行测试,四个视频的信息如下:
AVI格式的:test.avi      14.1M
3GP格式的:test.3gp      4.30M
MP4格式的:test.mp4      16.4M
WMV格式的:test.wmv      15.0M

1.使用高品质的脚本测试结果如下:
AVI格式转换后的:-qscale 6结果=avi_01.flv   6.61M      -qscale 4结果=avi_02.flv   9.30M
3GP格式转换后的:-qscale 6结果=3gp_01.flv   4.21M      -qscale 4结果=3gp_02.flv   5.30M
MP4格式转换后的:-qscale 6结果=mp4_01.flv   13.1M      -qscale 4结果=mp4_02.flv   17.5M
WMV格式转换后的:-qscale 6结果=wmv_01.flv   15.9M      -qscale 4结果=wmv_02.flv   22.3M

2.使用低品质的脚本测试结果如下:
AVI格式转换后的:-b 512结果=avi_03.flv   2.87M      -b 1000结果=avi_04.flv   2.87M
3GP格式转换后的:-b 512结果=3gp_03.flv   1.73M      -b 1000结果=3gp_04.flv   1.73M
MP4格式转换后的:-b 512结果=mp4_03.flv   5.84M      -b 1000结果=mp4_04.flv   5.84M
WMV格式转换后的:-b 512结果=wmv_03.flv   6.17M      -b 1000结果=wmv_04.flv   6.17M

3.压缩率比较如下:
AVI格式转换后的:-qscale 6结果=53.12%   -qscale 4结果=34.04%   -b 512/1000结果=79.65%
3GP格式转换后的:-qscale 6结果=2.093%   -qscale 4结果=123.1%   -b 512/1000结果=59.77%
MP4格式转换后的:-qscale 6结果=20.12%   -qscale 4结果=106.7%   -b 512/1000结果=64.39%
WMV格式转换后的:-qscale 6结果=106.0%   -qscale 4结果=148.7%   -b 512/1000结果=58.87%

    通过比较前后的压缩大小我们可以看到在音频保持一致的情况下,使用高品质的转换和使用低品质的转换的巨大差异,同时对于不同格式的视频在转换的过程中也会出现比较大的差异。当然了,这些数据并不一定代表所有这些格式的视频都是如此,具体的要看大家的应用了。不过,我们可以确定的是AVI格式的视频在转换成FLV格式后其压缩率最大,不过对于不同编码的AVI其结果就不一定了。同时我们也还看到,对于某些格式的视频在转换后其体积比原先的还大了,这个我们在应用的时候就需要注意了。

    这里没有测试RM和RMVB格式的,因为ffmpeg无法直接转换这两种格式的视频,下次我将使用mencoder来测试转换RM和RMVB格式的视频为FLV的分析。以下是转换前后截取的图片,可以参考看一下.

1.AVI格式截取前、使用-qscale 6和-b 512三个的截图分别如下:


2.3GP格式截取前、使用-qscale 6和-b 512三个的截图分别如下:


3.MP4格式截取前、使用-qscale 6和-b 512三个的截图分别如下:



4.WMV格式截取前、使用-qscale 6和-b 512三个的截图分别如下:


分享到:
评论

相关推荐

    videomorph:用户友好的基于FFMPEG的视频转换器,用PythonPyQt5编写

    使用VideoMorph,您可以将喜欢的视频转换为当前更流行的视频格式,例如MPG , MP4 , AVI , WEBM , DVD , VCD , FLV , MOV , OGV ,还可以将音频提取为MP3格式的文件。 VideoMorph是一个视频转换器,仅此而已...

    格式工厂 1.85 安装版

    1 支持几乎所有类型多媒体格式到常用的几种格式 2 转换过程中可以修复某些损坏的视频文件 3 多媒体文件减肥. 4 支持iPhone/iPod/PSP等多媒体指定格式 5 转换图片文件支持缩放,旋转,水印等功能 6 DVD视频抓取功能...

    使用red5.doc

    我用FFMpeg转了几个视频,效果还可以,在声音上碰到了一些问题,在不添加参数的情况下,有一部分视频的声音会有问题,有的视频无论怎么添加参 数,都出不来声音,报错提示的是不支持所带的声音采样格式,只支持几种...

    djivc:一个简单的PyQt5 GUI,可将DJI无人机(如Mini 2)中的h264(.mp4)4k视频转换为DNxHR(.mov)

    我知道有几个项目可以为您提供ffmpeg的GUI,但是没有一个项目可以给我进行专门的转换,如果您想将DJI Mini 2 4K视频编辑为DaVinci Resolve(免费Linux版本),则非常有用。 唯一需要的库是PyQt5。 ..当然还有python...

    matlab怎样由代码生成图片-Film-Strips:用于将视频转换为电影胶片的源代码

    FFMPEG是一种方便的命令行工具,可用于从视频文件中提取帧。 这个命令 ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-d.jpeg 将每秒从视频中提取一个视频帧,并将它们输出到名为foo-001.jpeg,foo-002.jpeg等的文件...

    Apprentice Video:它是视频播放器,还可以播放音乐和图片-开源

    该播放器提供了几种性能选项,可在慢速硬件上启用适当的视频播放:*跳过循环过滤器*跳过非参考帧*跳过颜色转换器*降低播放速度以适应慢速视频解码注意:不提供Linux二进制文件。 请从源代码构建。

    orb算法matlab代码-FreeTiltPainter:GG4U@iNTUition

    cam,通过使用Shell脚本控制Linux上的ffmpeg将其转换为UDP流格式,我们设法将其转换为无线网络摄像头,然后对其进行了调整,以使总延迟不超过500ms。 然后,我们使用Matlab的CameraCalibrationToolbox来计算其焦距...

    simple-ehm:用于完成简单任务的简单工具

    emh-runnable.py --help为模型做贡献您可以通过两种方法为模型做出贡献:贡献数据集通过向我发送至少30个1秒长的WAV pcm_s16le单声道16kHz短片(静音,语音,嗯),[简单] 您可以使用ffmpeg将片段转换为正确的格式:...

Global site tag (gtag.js) - Google Analytics