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三个的截图分别如下:

时间: 2025-01-05 01:23:40

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

asp.net实现调用ffmpeg实现视频格式的转换

视频格式转换的函数 //视频转换 public void VideoConvertFlv(string FromName, string ExportName) { string ffmpeg = HttpContext.Current.Server.MapPath("~/UploadFiles/FLV/ffmpeg.exe"); FromName = HttpContext.Current.Server.MapPath(FromName); ExportName = HttpCont

三种视频格式的区分 :VGA DVI HDMI

家里的高清电视越来越普遍,而这些高清电视大多带了VGA.DVI.HDMI的接口.笔记本电脑的屏幕太小,办公的人大多想要外接一个显示器.所以明白这三种视频信号接口的区别,是选购合适显示器的前提. 方法/步骤 提前说明下:三种接口的转接头都存在公针和母针的区别,购买转接线时要注意需要的是公针头还是母针头. VGA接头:针数为15的视频接口,主要用于老式的电脑输出.VGA输出和传递的是模拟信号.大家都知道计算机显卡产生的是数字信号,显示器使用的也是数字信号.所以使用VGA的视频接口相当于是经历了一个数

三种时间格式的转换

一 时间元组 1. 时间元组和时间戳的互化 import time,datetime # 获取当前时间的时间元组 t = time.localtime() print(t) # 时间元组转时间戳 timestamp = time.mktime(t) print(timestamp) # time.struct_time(tm_year=2019, tm_mon=10, tm_mday=23, tm_hour=23, tm_min=15, tm_sec=41, tm_wday=2, tm_yday

迅捷视频转换器如何做到mp4转换为mov视频格式而不损失画质呢?

MOV是一种大家熟悉的流式视频格式,在某些方面它甚至比WMV和RM更优秀,并能被众多的多媒体编辑及视频处理软件所支持,用MOV格式来保存影片是一个非常好的选择.它无论是在本地播放还是作为视频流格式在网上传播,都是一种优良的视频编码格式.小编来教大家使用迅捷视频转换器 转换mov视频格式http://app.xunjiepdf.com/video并且不损失画质的方法 1.首先百度搜索 迅捷视频转换器http://www.xpgod.com/soft/53462.html下载安装,安装地址除C盘外,

【转】FFMPEG使用参数详解

目前又开始测MPEG1和MPEG2的解码,在准备编码好的测试序列过程中,需要通过编码器来进行原始视频序列的编码操作,以生成我们需要的测试数据.由于IPP example提供的Encoder不支持MPEG1,经过查询,决定MPEG1的编码使用FFMPEG.FFMEPG是个啥子东西呢,这里简单说一下:FFmpeg是用于录制.转换和流化音频和视频的完整解决方案,一套领先的音/视频编解码类库. FFmpeg的官方网址是 http://ffmpeg.mplayerhq.hu/ . 中文Wiki是 http

FFmpeg基础库编程开发学习笔记——视频常见格式

声明一下:这些关于ffmpeg的文章仅仅是用于记录我的学习历程和以便于以后查阅,文章中的一些文字可能是直接摘自于其它文章.书籍或者文献,学习ffmpeg相关知识是为了使用在Android上,我也才是刚開始接触学习,如有不正确之处还请指出. 视频格式能够分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类.虽然后者在播放的稳定性和播放画面质量上可能没有前者优秀.但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播.网络演示.远程教育.网络视频广告等等互联网信息服务领域.

java视频格式转换代码

http://blog.163.com/zzf_fly/blog/static/20958915820127217443816/ package com.gkzx.online.action; import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List; import org.apache.struts2.ServletA

手机爱奇艺视频qlv格式怎么转换mp4格式

1.搜索: 小白兔视频格式在线转换 2.上传你的视频(腾讯qlv,爱奇艺qsv.优酷kux)都可以. 3.转换好后,我们把转换的视频下载到电脑里,就可以看到视频已经是MP4格式了. 原文地址:https://blog.51cto.com/14204019/2389406

视频格式与编码问题分析

一.什么是视频格式? 视频格式是一种封装格式,就是把编码后的比特流进行封装,不同的视频格式封装方法不同.目前视频都是由音频流+视频流组成.格式只是封装容器,例如rmvb,mkv,MP4,mpg,ts等等.常见的视频流有MPEG2,MPEG4,H264,VC1等等,MPEG2是比较老式的视频编码,压缩率很低.MPEG4是比较新的编码,常见于DVD影片等等,压缩率一般,最新的MPEG4视频编码是Xvid,还有比较老的DivX.H264(X264是H264的一种)是新生的视频编码,常见于高清视频中,压