`
chilongxph
  • 浏览: 138265 次
  • 性别: 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三个的截图分别如下:


分享到:
评论

相关推荐

    java调用视频转换工具ffmpeg.zip

    对于初学者,理解FFmpeg的命令行参数和选项是至关重要的,因为这直接影响到转换的效果和效率。 在实际应用中,Java调用FFmpeg进行视频转换时,需要注意以下几点: 1. 文件权限:确保Java程序有读取输入文件和写入...

    用ffmpeg转换视频格式.pdf

    在了解如何使用FFmpeg转换视频格式之前,首先要了解FFmpeg是一个功能强大的多媒体框架,可以用来记录、转换、流化和复用各种音视频格式。它支持广泛的视频与音频编解码器和协议,并且是免费开源的。 ### 知识点一:...

    ffmpeg-php扩展 ffmpeg.exe php视频格式转换

    总结来说,ffmpeg-php扩展结合ffmpeg.exe,为PHP提供了一种在服务器端处理视频的强大工具,允许开发者通过编写PHP代码进行视频格式转换、裁剪、合并等操作,极大地拓展了PHP在多媒体领域的应用能力。

    视频格式转换资料

    本文将深入探讨视频格式转换的相关知识点,以及如何实现从几种主流视频格式转换为FLV(Flash Video)格式。 首先,我们要了解视频格式。常见的视频格式有MP4、AVI、MOV、WMV、MKV等,每种格式都有其特定的编码标准...

    FFMPEG解码视频流

    在VC(Visual C++)环境下,通过FFmpeg库,我们可以实现对各种视频流的解码,包括H264和MPEG4等常见的编码格式。 首先,解码视频流的步骤大致分为以下几个部分: 1. **初始化FFmpeg库**:在VC项目中,我们需要引入...

    FFmpeg视频mp4转换mov示例,可供FFmpeg学习

    这条命令会保留原有的视频编码和音频编码,仅改变容器格式,这是一种高效且兼容性好的转换方式。 总的来说,FFmpeg是一个强大的工具,无论是用于开发还是日常的多媒体处理。通过学习和实践`mp4_to_mov`这个示例,你...

    ffmpeg整体流程及视频格式分析(马德祥)

    FFmpeg 的核心框架由几个关键库组成:libavformat处理输入/输出格式,libavcodec处理编解码,libavfilter实现过滤器系统,libavutil提供通用工具和数据结构,以及libswscale和libswresample分别用于色彩空间转换和...

    ffmpeg完成音视频合成

    FFmpeg 是一个强大的开源工具,用于处理音视频文件,包括音视频的编码、解码、转换、分割、合并等操作。在Java环境中,我们可以利用JNI(Java Native Interface)或者通过执行系统命令的方式来调用FFmpeg的exe文件,...

    (带一键安装脚本sh)Linux编译ffmpeg并转换MP3到AMR.zip

    FFmpeg 是一个强大的开源多媒体处理工具,用于处理视频和音频文件。它包含了各种编解码器、滤镜和工具,可以进行格式转换、剪辑、流传输等多种操作。在Linux环境中,FFmpeg的编译与安装通常是开发人员的常规工作之一...

    ffmpeg h264 转换jpg

    FFmpeg是一款强大的开源多媒体处理工具,它支持各种视频、音频格式的编码、解码、转换、流媒体处理等操作。在本场景中,我们将重点讨论如何利用FFmpeg 3.4.1版本,针对64位系统,并使用VS2012编译环境,将H264编码的...

    java封装ffmpeg截取视频图片

    Java 封装FFmpeg库是将FFmpeg的强大功能与Java编程语言相结合的一种方式,使得开发者在Java环境中可以方便地处理视频和音频文件。FFmpeg是一个跨平台的解决方案,用于处理多媒体数据,包括视频转码、视频剪辑、视频...

    cpp-用于在视频流之间应用GLSL转换的FFmpeg过滤器

    FFmpeg是一款强大的开源多媒体处理工具,它支持音频和视频的编码、解码、转换和流化。在FFmpeg中,过滤器是用于处理音视频流的关键组件,它们可以执行各种操作,如剪辑、裁剪、调整亮度和色彩,以及应用特效等。"cpp...

    ffmpeg合并视频的多种方式.docx

    在本文中,我们将探讨几种使用 FFmpeg 合并视频的无损或有损方法,针对不同类型的视频源和需求。 **方法一:FFmpeg concat 协议** FFmpeg concat 协议适用于那些使用相同编码器的视频片段,尤其是 MPEG 格式的视频...

    万能的视频格式转换软件

    视频格式转换软件是一种非常实用的工具,它允许用户将各种不同类型的视频文件转换为其他兼容的格式,以适应不同的设备或平台的需求。标题中的“万能”指的是这种软件的广泛兼容性,它能够处理多种多样的视频格式,...

    ffmpeg的安装和使用攻略

    2. 转换视频和音频格式:可以将一种格式的文件转换为另一种格式。 3. 视频剪辑和拼接:可以截取视频的一部分或合并多个视频。 4. 视频和音频质量调整:如改变分辨率、比特率、帧率等。 5. 添加水印、字幕和音轨:...

    Qt+FFMPEG+SDL实现的视频播放器

    2. **解码**:然后,FFmpeg使用内置的解码器对音视频流进行解码,将压缩的数据转换为原始的像素和样本数据。 3. **音视频同步**:FFmpeg还负责处理音视频同步问题,确保视频画面和音频播放的同步性。 **SDL** SDL...

    使用ffmpeg合并m3u8格式视频.docx

    标题中的“使用ffmpeg合并m3u8格式视频.docx”是指使用开源的多媒体处理工具ffmpeg来合并m3u8格式的视频文件。m3u8文件实际上是一种播放列表,它包含了多个ts视频片段的路径,这些片段可能是由HTTP Live Streaming ...

    ffmpeg编码视频文件例子VC

    FFmpeg 是一个强大的开源工具套件,用于处理多媒体文件,包括音频和视频的编码、解码、转换和流媒体。在“ffmpeg编码视频文件例子VC”这个项目中,我们主要探讨的是如何使用FFmpeg库在VC++环境中编码一个.AVI视频...

Global site tag (gtag.js) - Google Analytics