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. centos7 部署zabbix服务器端

    zabbix服务器端搭建与部署: 1.部署LAMP环境由于zabbix提供集中的web监控管理界面,因此服务在web界面的呈现需要LAMP架构支持.php 连接mysql服务,因为7版本mysql要收 ...

  2. AIX查看系统日志

    1.查看系统启动日志 在AIX中可以使用alog命令来查看系统日志.   启动日志: /var/adm/ras/bootlog /var/adm/ras/bosinstlog /var/adm/ras ...

  3. linux 文件查找 find命令详解

    一,从索引库查找文件:locate 索引库:操作系统会周期性的遍历根文件系统,然后生成索引库 手动更新索引库:updatedb 语法:locate [OPTION]... PATTERN... 只匹配 ...

  4. js - 基础 之 预编译总结

    js运行步骤 语法解析(检查有无语法错误) 预编译 解释运行(将 js 翻译成计算机识别的语言(0.1组成),翻译一行执行一行) 预编译 [全局]: 创建 GO( Grobal Object ) 对象 ...

  5. 深入理解JAVA虚拟机 虚拟机字节码执行引擎

    执行引擎 执行引擎是java虚拟机的重要组成部分.它的作用是接收字节码,解析字节码,执行并输出执行结果. 虚拟机是相对于物理机的概念,物理机的执行引擎是直接建立在处理器.寄存器.指令集和操作系统的层面 ...

  6. 你可能用到的Spring工具类?

    现在绝大部分项目都已经拥抱Spring生态,掌握Spring常用的工具类,是非常重要,零成本增加编码效率. 一.常用工具类 ObjectUtils org.springframework.util.O ...

  7. UEditor富文本编辑器简单使用

    UEditor富文本编辑器简单使用 一.下载地址:https://ueditor.baidu.com/website/ 官网中并没有 python 版本的 UEditor 富文本编辑器,本文简单介绍 ...

  8. 阅读之spring框架

    资源表示:Resource Spring框架内部使用org.springframework.core.io.Resouce接口作为所有资源的抽象和访问接口. 它继承了 org.springframew ...

  9. linux系统下导出MySQL文件

    1.配置:从centOS6.5系统,MySQL数据库 2.导出.sql文件的命令: mysqldump -uroot -h116.228.90.147 -P18006 -p aimo > /ho ...

  10. shell练习--PAT题目1007:关于素数对(失败案例)

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素 ...