日志源地址: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三个的截图分别如下:
分享到:
相关推荐
对于初学者,理解FFmpeg的命令行参数和选项是至关重要的,因为这直接影响到转换的效果和效率。 在实际应用中,Java调用FFmpeg进行视频转换时,需要注意以下几点: 1. 文件权限:确保Java程序有读取输入文件和写入...
在了解如何使用FFmpeg转换视频格式之前,首先要了解FFmpeg是一个功能强大的多媒体框架,可以用来记录、转换、流化和复用各种音视频格式。它支持广泛的视频与音频编解码器和协议,并且是免费开源的。 ### 知识点一:...
总结来说,ffmpeg-php扩展结合ffmpeg.exe,为PHP提供了一种在服务器端处理视频的强大工具,允许开发者通过编写PHP代码进行视频格式转换、裁剪、合并等操作,极大地拓展了PHP在多媒体领域的应用能力。
本文将深入探讨视频格式转换的相关知识点,以及如何实现从几种主流视频格式转换为FLV(Flash Video)格式。 首先,我们要了解视频格式。常见的视频格式有MP4、AVI、MOV、WMV、MKV等,每种格式都有其特定的编码标准...
在VC(Visual C++)环境下,通过FFmpeg库,我们可以实现对各种视频流的解码,包括H264和MPEG4等常见的编码格式。 首先,解码视频流的步骤大致分为以下几个部分: 1. **初始化FFmpeg库**:在VC项目中,我们需要引入...
这条命令会保留原有的视频编码和音频编码,仅改变容器格式,这是一种高效且兼容性好的转换方式。 总的来说,FFmpeg是一个强大的工具,无论是用于开发还是日常的多媒体处理。通过学习和实践`mp4_to_mov`这个示例,你...
FFmpeg 的核心框架由几个关键库组成:libavformat处理输入/输出格式,libavcodec处理编解码,libavfilter实现过滤器系统,libavutil提供通用工具和数据结构,以及libswscale和libswresample分别用于色彩空间转换和...
FFmpeg 是一个强大的开源工具,用于处理音视频文件,包括音视频的编码、解码、转换、分割、合并等操作。在Java环境中,我们可以利用JNI(Java Native Interface)或者通过执行系统命令的方式来调用FFmpeg的exe文件,...
FFmpeg 是一个强大的开源多媒体处理工具,用于处理视频和音频文件。它包含了各种编解码器、滤镜和工具,可以进行格式转换、剪辑、流传输等多种操作。在Linux环境中,FFmpeg的编译与安装通常是开发人员的常规工作之一...
FFmpeg是一款强大的开源多媒体处理工具,它支持各种视频、音频格式的编码、解码、转换、流媒体处理等操作。在本场景中,我们将重点讨论如何利用FFmpeg 3.4.1版本,针对64位系统,并使用VS2012编译环境,将H264编码的...
Java 封装FFmpeg库是将FFmpeg的强大功能与Java编程语言相结合的一种方式,使得开发者在Java环境中可以方便地处理视频和音频文件。FFmpeg是一个跨平台的解决方案,用于处理多媒体数据,包括视频转码、视频剪辑、视频...
FFmpeg是一款强大的开源多媒体处理工具,它支持音频和视频的编码、解码、转换和流化。在FFmpeg中,过滤器是用于处理音视频流的关键组件,它们可以执行各种操作,如剪辑、裁剪、调整亮度和色彩,以及应用特效等。"cpp...
在本文中,我们将探讨几种使用 FFmpeg 合并视频的无损或有损方法,针对不同类型的视频源和需求。 **方法一:FFmpeg concat 协议** FFmpeg concat 协议适用于那些使用相同编码器的视频片段,尤其是 MPEG 格式的视频...
视频格式转换软件是一种非常实用的工具,它允许用户将各种不同类型的视频文件转换为其他兼容的格式,以适应不同的设备或平台的需求。标题中的“万能”指的是这种软件的广泛兼容性,它能够处理多种多样的视频格式,...
2. 转换视频和音频格式:可以将一种格式的文件转换为另一种格式。 3. 视频剪辑和拼接:可以截取视频的一部分或合并多个视频。 4. 视频和音频质量调整:如改变分辨率、比特率、帧率等。 5. 添加水印、字幕和音轨:...
2. **解码**:然后,FFmpeg使用内置的解码器对音视频流进行解码,将压缩的数据转换为原始的像素和样本数据。 3. **音视频同步**:FFmpeg还负责处理音视频同步问题,确保视频画面和音频播放的同步性。 **SDL** SDL...
标题中的“使用ffmpeg合并m3u8格式视频.docx”是指使用开源的多媒体处理工具ffmpeg来合并m3u8格式的视频文件。m3u8文件实际上是一种播放列表,它包含了多个ts视频片段的路径,这些片段可能是由HTTP Live Streaming ...
FFmpeg 是一个强大的开源工具套件,用于处理多媒体文件,包括音频和视频的编码、解码、转换和流媒体。在“ffmpeg编码视频文件例子VC”这个项目中,我们主要探讨的是如何使用FFmpeg库在VC++环境中编码一个.AVI视频...