`
ferreousbox
  • 浏览: 287809 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

    我们在将多种格式的视频转换成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三个的截图分别如下:

5
0
分享到:
评论
10 楼 海底行者 2014-01-08  
lyh20081984 写道
看过你的这篇文章以后,有了些许头绪,不过遇到两个问题;
其一: ffmpeg所支持的3gp在转换成flv的过程中不行..flv文件是生成了,不过大小为零..其它的格式,如mp4,avi都可以正常转换(其它的格式子未测试).
其二: 转换需要一定的时候,如果用winfrom()方法的话,那就会导致用户等待,直至完成转换为止.请问楼主有什么方法可以不让用户等待并且在完成转换之后能同时把源视频文件删除


至于这个问题,我觉得应该是用多线程在后台进行操作的
9 楼 dirtypp 2013-10-28  
大赞,楼主真是想吾等之所想,给吾值所需。
8 楼 lizilong86 2013-07-11  
请问大侠们,转换的命令怎么用啊,是在AS里写吗?
7 楼 无影K 2012-08-16  
关注啊 。。
6 楼 newsletterBroker 2012-07-23  
,试了一下,果然图像质量提高了
5 楼 liuxuejin 2012-05-10  
回去研究一下
4 楼 25262875 2011-10-28  
如果可以将swf转换成flv,那么请提供命令参数,谢谢
3 楼 25262875 2011-10-28  
大牛,可以告诉我ffmpeg是否可以转换swf吗?
2 楼 ferreousbox 2010-01-26  
格式的问题应该是你的编码集没有完全或是其他缘故吧,我试过是没有问题的。对于转换而言,最好是单独起一个线程来做这个事情,避免过长时间的等待
1 楼 lyh20081984 2010-01-25  
看过你的这篇文章以后,有了些许头绪,不过遇到两个问题;
其一: ffmpeg所支持的3gp在转换成flv的过程中不行..flv文件是生成了,不过大小为零..其它的格式,如mp4,avi都可以正常转换(其它的格式子未测试).
其二: 转换需要一定的时候,如果用winfrom()方法的话,那就会导致用户等待,直至完成转换为止.请问楼主有什么方法可以不让用户等待并且在完成转换之后能同时把源视频文件删除

相关推荐

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

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

    用ffmpeg转换视频格式.pdf

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

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

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

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

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

    视频格式转换资料

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

    FFMPEG解码视频流

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

    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