FFMPEG -i 1.wmv -c:v libx264 -strict -2 1_wmv.mp4

ffmpeg -i b.mp4 -codec copy -bsf h264_mp4toannexb a.ts

ffmpeg -i 1.mp4 -c:v libx264 -crf 24 destination.flv

ffmpeg -i HYB-wish.wav -acodec libmp3lame -ab 192k -ac 2 HYB-wish.mp3
ffmpeg -i HYB-wish.wav -acodec libfaac -ab 192k -ac 2 HYB-wish.aac
ffmpeg -i HYB-wish.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 HYB-wish-nb.amr
ffmpeg -i HYB-wish.wav -acodec libamr_wb -ab 23.85k -ar 16000 -ac 1 HYB-wish-wb.amr

转载自:http://www.cnblogs.com/super119/archive/2010/12/09/1901539.html

现在绝大部分的所谓转换软件都是基于ffmpeg的,mencoder也用的是ffmpeg。ffmpeg就是做mplayer的组织做的。所以,为什么很多软件转换不了某些文件和codec呢?就因为ffmpeg不支持。比如:wmvv3(wmv9) encoding,ffmpeg现在不支持,所以,基本上现在能看到的转换软件都不支持,只能支持wmvv1(wmv7), wmvv2(wmv8)的decode和encode。  
 
以下是一些步骤和关键点:
1. 自己编译ffmpeg。Ubuntu reposiroty中的ffmpeg功能不全(主要是看怎么编译的),比如由于没有将libmp3lame引入,所以,Ubuntu官方repository中的ffmpeg是无法encode mp3的(只能encode mp2 -- mpeg 1 audio layer 2)。编译ffmpeg很简单,configure, make, sudo make install就OK了。主要是configure,看打开哪些支持,这次我做的是:
 
./configure --prefix=/usr --enable-gpl --enable-postproc --enable-nonfree --enable-pthreads --enable-x11grab --enable-libamr-nb --enable-libamr-wb --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-libxvid --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-armvfp
 
按照上面的命令行,要自己安装faac, faad, libmp3lame, amrnb, amrwb, x264...。特别是要记得安装这些包的dev版本,dev版本的包中才有头文件。这里也可以看出ffmpeg也不是每个decoder/encoder都是自己做的,也依赖很多其他的项目。比如x264,这是VLC player那个组织做的,用于H264的encoder/decoder。
 
2. 然后就是使用ffmpeg了。可以非常方便的转换媒体文件,比如:
 
ffmpeg -i HYB-wish.wav -acodec libmp3lame -ab 192k -ac 2 HYB-wish.mp3
ffmpeg -i HYB-wish.wav -acodec libfaac -ab 192k -ac 2 HYB-wish.aac
ffmpeg -i HYB-wish.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 HYB-wish-nb.amr
ffmpeg -i HYB-wish.wav -acodec libamr_wb -ab 23.85k -ar 16000 -ac 1 HYB-wish-wb.amr
 
看ffmpeg的manual就可以知道这些参数的含义,非常简单:-i -- input file; -acodec -- 指定audio codec,用ffmpeg -formats命令可以看到当前编译的ffmpeg支持的所有file formats和codec;-ab -- bitrate,主要数字后面要带一个k,否则无效;-ac 指定channel数;-ar 指定sample rate,注意amrnb是8000,amrwb是16000,普通的是44100/48000。最后一个参数就是输出文件的名字,ffmpeg会根据扩展名来检测我们要转换成什么file format,也可以用-f option来明确指定output file format。
 
3. 转换video:
 
# 只转换14400帧 -- 24fps,所以这是10分钟,也就是将input mp4的前十分钟导出
ffmpeg -i mada2_h264_aac_24.mp4 -vcodec copy -vframes 14400 -acodec copy mada_h264_aac_24.mp4
 
# -s: size; -r fps; -b bitrate; "copy" means 不转换,纯拷贝
ffmpeg -i samsung_mpeg4_aac_30.mp4 -vcodec h263 -s cif -r 30 -b 496k -acodec copy samsung_h263_aac_30.3gp
ffmpeg -i samsung_mpeg4_aac_30.mp4 -vcodec h263p -r 30 -b 496k -s qvga -acodec copy samsung_h263p_aac_30.mov
ffmpeg -i samsung_mpeg4_aac_30.mp4 -vcodec libx264 -s qvga -r 30 -b 496k -acodec copy samsung_h264_aac_30.mp4
 
# ffmpeg -i samsung_mpeg4_aac_30.mp4 -vcodec mpeg2video -s qvga -r 30 -b 496k -acodec libmp3lame -ab 192k -ac 2 samsung_mpeg2_mp3_30.mpg
 
ffmpeg -i mada_h264_aac_24.mp4 -vcodec h263 -s cif -r 24 -b 952k -acodec copy mada_h263_aac_24.3gp
ffmpeg -i mada_h264_aac_24.mp4 -vcodec h263p -s 480x272 -b 952k -r 24 -acodec copy mada_h263p_aac_24.mov
ffmpeg -i mada_h264_aac_24.mp4 -vcodec mpeg4 -s 480x272 -r 24 -b 952k -acodec copy mada_mpeg4_aac_24.mp4
 
# ffmpeg -i mada_h264_aac_24.mp4 -vcodec mpeg2video -s 480x272 -b 952k -r 24 -acodec libmp3lame -ac 2 -ab 192k mada_mpeg2_mp3_24.mpg
 
还有两点注意:
1. 不同的codec支持的video size是不一样的。比如h263是不支持qvga(320x240)的。如果设置错了也没关系,ffmpeg会提示,而且会打印出h263支持的所有video size大小。如果Audio转换的参数给错了,ffmpeg也会打印原因和提示信息,非常的不错。
2. 不同的file format对能放入其中的codec也是有要求的。比如mp4就不能放入h263/mp3。所以上面转成h263的时候,输出文件都是3gp。如果file format给错了,ffmpeg的出错信息是:[ <file format> <function address>]: could not find tag......
 
基本上就是这样了。ffmpeg还是非常好用的,特别是用来转换不同的media file和codec。参考ffmpeg的manual可以查阅每个参数的解释。
不过ffmpeg现在也是有很多问题的:比如很多的codec现在还是不支持,像wmvv3(wmv9), wmav3(wma9)等。还有很多codec只提供了decoder,没有提供encoder。这对于转换来说也非常痛苦,对于播放倒是没什么。还有一些bug,比如上面命令行中,转换到h263p的时候,如果输出文件格式给定的是3gp,就会出错说could not find tag...,事实上,3gp中是可以放入h263p的,m.youtube.com上的3gp就是h263++/amr。所以,上面用mov来代替了。
 
BTW:如果要转换成wma/wmv的话,前面说了,如果是wmav1, wmav2, wmvv1, wmvv2(也就是wma7, wma8, wmv7, wmv8),使用ffmpeg就可以搞定。但是如果是wmav3, wmvv3(wma9, wmv9)的话,就只能用微软的windows media encoder了。windows media encoder要求输入文件是bmp, jpg, mp3, wav, mpg, avi, wmv, wma, asf,其他的一概不能兼容。

使用ffmpeg来转换media Video的更多相关文章

  1. ffplay的快捷键以及选项 FFmpeg 基本用法 FFmpeg常用基本命令 ffmpeg常用转换命令,支持WAV转AMR

    ffmpeg -i 32_mkv_h264_718x480_ac3.mkv  -codec copy -bsf:v h264_mp4toannexb  -f mpegts xx.ts ./ffmpeg ...

  2. c# ffmpeg视频转换

    c#  ffmpeg视频转换 什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了! http://baik ...

  3. c# ffmpeg视频转换【转载】

    c#  ffmpeg视频转换 什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了! http://baik ...

  4. ffmpeg 音频转换: use ffmpeg convert the audio from stereo to mono without changing the video part

    To convert the audio from stereo to mono without changing the video part, you can use FFmpeg: ffmpeg ...

  5. 使用python+ffmpeg批量转换格式

    需求:  给定一个文件夹路径,遍历该文件夹内的所有文件以及子文件夹内的文件,当所有后缀名为wav格式的文件转换为ogg格式的文件. import os # 获取目录下的所有文件列表 import fn ...

  6. ffmpeg常用转换命令,支持WAV转AMR

    音频转换: 1.转换amr到mp3: ffmpeg -i shenhuxi.amr amr2mp3.mp3 2.转换amr到wav: ffmpeg -acodec libamr_nb -i shenh ...

  7. ffmpeg 频中分离 video audio 截取片断

    1.获取视频的信息    ffmpeg -i video.avi 2,将图片序列分解合成视频    ffmpeg -i src.mpg image%d.jpg ffmpeg -f image2 -i ...

  8. ffmpeg常用转换命令

    音频转换: 1.转换amr到mp3: ffmpeg -i shenhuxi.amr amr2mp3.mp3 2.转换amr到wav: ffmpeg -acodec libamr_nb -i shenh ...

  9. ffmpeg格式转换

    遇到有些wav文件在ubuntu下无法打开的情况,可以使用ffmpeg进行格式转换即可 ffmpeg -i 0.wav test.wav

随机推荐

  1. jumpserver模块功能介绍

    一.仪表盘二.用户管理1.用户列表2.用户组 三.资产管理 1.资产列表 1.1 管理资产树 资产树节点不能重名, 右击节点可以添加.删除和重命名节点, 以及进行资产相关的操作 1.2 为资产树节点创 ...

  2. [转载](转)ISE中ROM初始化文件(.coe)的建立

    原文地址:(转)ISE中ROM初始化文件(.coe)的建立作者:老徐 UltraEdit 对于ROM模块,主要是生成相应的.coe文件. 1.在Matlab中生成正余弦波形的浮点值,并量化为16bit ...

  3. 一个web应用的诞生(7)

    现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题. Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的 ...

  4. jmeter使用正则表达式提取数据

    1.通过正则表达式提取到接口返回的中的某些数据.例如:success":true,"data":{"typeID":"(\w+)" ...

  5. 轻松获取LAMP,LNMP环境编译参数配置

    轻松获取LAMP,LNMP环境编译参数配置 作者:Mr.Xiong /分类:系统管理  字号:L M S     大家是否遇到过去了新公司,公司内的LAMP,LNMP等所有的环境都是配置好的(已经在提 ...

  6. python实例31[列出目录下所有的文件到txt]

    代码: (使用os.listdir) import os def ListFilesToTxt(dir,file,wildcard,recursion):     exts = wildcard.sp ...

  7. python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误

    出现这个问题的主要原因是因为python2的编码是ASCII码,文件中有中文的话就得使用utf8编码,只需要在文件的头部加上以下其中一种标注: 一.在文件头部添加如下注释码: # coding=< ...

  8. javascript(腾讯)

    var a={key:"1",value:2}; war b=a; b.value+=a.key, 打印b.value是多少,a.value呢? 答案:都是21.因为javascr ...

  9. 记第一次正式线上笔试(Tencent——正式考-技术研发类-综合-2018实习生招聘)

    选择题做的跟傻逼一样,不多说了..大学只打了ACM还不是计算机科班出身的我,连好多名词都不认识..... 三道编程题很简单,下面给出三道题的大致题意以及题解. 1.给出n和m,满足(2m)可以整除n. ...

  10. layui.form is not a function

    改变: var form = layui.form; 如果你是从1.x升级2.x造成的,那只需要在定义的时候吧后面的()去掉就可以了.请关注更新日志:1.x 升 2.0 特别注意事项layDate日期 ...