ffmpeg 命令集的简单实用方法
一、常用操作
1.获取视频的信息
ffmpeg -i video.MP4
4.为视频重新编码以适合在iPod/iPhone上播放
ffmpeg -i source_video.MP4 input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
说明:
* 源视频:source_video.MP4
* 音频编码:aac
* 音频位率:128kb/s
* 视频编码:mpeg4
* 视频位率:1200kb/s
* 视频尺寸:320 X 180
* 生成的视频:final_video.mp4
5.为视频重新编码以适合在PSP上播放
ffmpeg -i source_video.MP4 -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
说明:
* 源视频:source_video.MP4
* 音频编码:aac
* 音频位率:32kb/s
* 视频编码:xvid
* 视频位率:1200kb/s
* 视频尺寸:320 X 180
* 生成的视频:final_video.mp4
6.从视频抽出声音.并存为Mp3
ffmpeg -i source_video.MP4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
说明:
* 源视频:source_video.MP4
* 音频位率:192kb/s
* 输出格式:mp3
* 生成的声音:sound.mp3
7.将wav文件转成Mp3
ffmpeg -i son_origine.MP4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.将.MP4视频转成.mpg
ffmpeg -i video_origine.MP4 video_finale.mpg
9.将.mpg转成.MP4
ffmpeg -i video_origine.mpg video_finale.MP4
10.将.MP4转成gif动画(未压缩)
ffmpeg -i video_origine.MP4 gif_anime.gif
11.合成视频和音频
ffmpeg -i son.wav -i video_origine.MP4 video_finale.mpg
12.将.MP4转成.flv
ffmpeg -i video_origine.MP4 -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.将.MP4转成dv
ffmpeg -i video_origine.MP4 -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.MP4 -target pal-dv video_finale.dv
14.将.MP4压缩成divx
ffmpeg -i video_origine.MP4 -s 320x240 -vcodec msmpeg4v2 video_finale.MP4
15.将Ogg Theora压缩成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
16.将.MP4压缩成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.MP4 -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.MP4 -target pal-svcd video_finale.mpg
17.将.MP4压缩成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.MP4 -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.MP4 -target pal-vcd video_finale.mpg
18.多通道编码
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.从flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
二、实例详解FFmpeg视频转换的参数设置方法
例如:ffmpeg -y -i "test.MP4" -title "Test" -vcodec xvid -s 1920*1080 -r 30 - b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "test.***"
# 参数解释:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.MP4"(输入文件是和ffmpeg在同一目录下的1.MP4文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 1920*1080(输出的分辨率为1920*1080,注意片源一定要是16:9的不然会变形)
-r 30(帧数,一般就用这个吧)
-b 1500(视频数据流量,用-b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高)
-acodec aac(音频编码用AAC)
-ac 2(声道数1或2)
-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)
-ab 128(音频数据流量,一般选择32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(输出psp专用格式)
-muxvb 768(好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)
"test.***"(输出文件名,也可以加路径改文件名)
三、不同格式之间的相互转换
◆将任意视频格式(如MP4)转换成视频格式(如MPEG1)+音频格式(AC3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg1video –s 1920*1080 –r 60 -acodec ac3 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG1]_Audio[ac3].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MPEG2)+音频格式(DTS)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg2video –s 1920*1080 –r 60 -acodec dca -strict -2 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG2]_Audio[DTS].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MPEG2)+音频格式(PCM)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg2video –s 1920*1080 –r 60 -acodec pcm_alaw E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG2]_Audio[PCM].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MPEG4)+音频格式(MP3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mpeg4 –s 1920*1080 –r 60 -acodec dlibmp3lame E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][MPEG4]_Audio[ac3].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如MJPEG)+音频格式(MP2)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.MP4 -vcodec mjpeg –s 1920*1080 –r 60 -acodec mp2 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][ MJPEG]_Audio[MP2].mpeg
◆将任意视频格式(如MP4)转换成视频格式(如DivX5)+音频格式(DTS)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][DIVX5]_Audio[AC3].MP4 –s 1920*1080 –r 60 -acodec dca -strict -2 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][DIVX5]_Audio[dts].MP4
◆将任意视频格式(如MP4)转换成视频格式(如H.263)+音频格式(AC3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec h263p -s 720x480 -acodec ac3 E:\FormatTransfer_Tools\ffmpeg\bin\Video[720x480][60fps][h263]_Audio[ac3].MP4
◆将任意视频格式(如MP4)转换成视频格式(如H.264)+音频格式(AAC)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec libx264rgb –s 1920*1080 -r 30 -acodec libvo_aacenc E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][30fps][h264]_Audio[aac].3gp
◆将任意视频格式(如MP4)转换成视频格式(如Sorenson_Spark)+音频格式(MP3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec flv –s 1920*1080 –r 60 -acodec libmp3lame E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][Sorenson_Spark]_Audio[MP3].MP4
◆将任意视频格式(如MP4)转换成视频格式(如WMV3)+音频格式(WMA)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec wmv3image –s 1920*1080 –r 60 -acodec wmav1 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][WMV3]_Audio[wma1].MP4
◆将任意视频格式(如MP4)转换成视频格式(如XviD)+音频格式(AC3)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec libxvid –s 1920*1080 –r 60 -acodec ac3 E:\FormatTransfer_Tools\ffmpeg\bin\Video[1920x1080][60fps][XviD]_Audio[AC3_fixed].MP4
◆将任意视频格式(如MP4)转换成视频格式(如RV)+音频格式(AAC)的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec rv10 -s 1280x720 -acodec libvo_aacenc E:\FormatTransfer_Tools\ffmpeg\bin\Video[1280x720][60fps][RV10]_Audio[aac].MP4
◆将任意视频格式(如MP4)转换成视频格式(如H.264)+分辨率为4k的视频:
ffmpeg -y -i E:\FormatTransfer_Tools\ffmpeg\bin\test.mp4 -vcodec libx264rgb -s 4096x2304 -r 30 -acodec libmp3lame E:\FormatTransfer_Tools\ffmpeg\bin\Video[4096x2304][30fps][h264]_Audio[mp3].avi
四、音频操作
音频压缩
命令:
ffmpeg -i input.mp3 -map 0:a:0 -b:a 256k output.mp3
可以把 256
替换为其它数值,比如 320/256/128/64/32。
音频提取
命令:
ffmpeg -i input.mp4 -vn output.mp3
音频合并
需求技术分析:
音频文件数1-5 个,需要依次拼接输入文件;
每个文件都支持只保留选中的时间段内的内容;
第一个文件可以选择是否开启
淡入
效果,最后一个文件可以选择是否开启淡出
效果;文件数大于
1
时,可以选择是否开启交叉淡入淡出
效果(前一段的后 N 秒淡出
的同时,后一段的前 N 秒淡入
);可以指定合并后输出的文件格式;
以上步骤的先后顺序很关键,遵循顺序:拼接输入文件列表 -> 裁剪 -> 淡入淡出 -> 交叉淡入淡出。
以合并 3 个音频为例:
ffmpeg -i input1.mp3 -i input2.mp3 -i input3.mp3 \-filter_complex "[0]atrim=10.0:20.9[00];[1]atrim=40.0:50.9[11];[2]atrim=70.0:80.9[22];\[00]afade=enable='between(t,10.0,13.0)':t=in:st=10.0:d=3:curve=desi[000];\ [cc]afade=enable='between(t,77.9,80.9)':t=out:st=77.9:d=3:curve=desi[ccc];\[000][11]acrossfade=d=3:c1=desi:c2=desi[cf-0];[cf-0][ccc]acrossfade=d=3:c1=desi:c2=desi" \output.mp3
解释:
-i input1.mp3 -i input2.mp3 -i input3.mp3
因为有多个输入文件,所以要依次拼凑起来。
-filter_complex
因为需要使用到 atrim
、afade
、acrossfade
等多个 filter,所以需要使用 -filter_complex
,作用是组合多个 filter。
[0]atrim=10.0:20.9[00];[1]atrim=40.0:50.9[11];[2]atrim=70.0:80.9[22];
为每个文件都支持只保留选中的时间段内的内容。
[0]
表示取第一个输入文件;
atrim
表示做裁剪操作;
10.0:20.9
表示保留文件的 10.0
秒到 20.9
秒之间的部分;
[00]
表示 [0]
经过 atrim
处理后输出的 stream 是 [00]
,后续的操作都在 [00]
上进行;
第二个和第三个文件的 atrim
操作同理。
[00]afade=enable='between(t,10.0,13.0)':t=in:st=10.0:d=3:curve=desi[000];\ [cc]afade=enable='between(t,77.9,80.9)':t=out:st=77.9:d=3:curve=desi[ccc];\
实现第一个文件的 淡入
效果,以及最后一个文件的 淡出
效果。
between(t,10.0,13.0)
表示在第 10
秒到第 13
秒,
t=in
表示 淡入
,
st=10.0
表示从第 10
秒开始,
d=3
表示淡入的时长为 3
秒,
curve=desi
表示淡入的效果曲线是 desi
, 更多的选择请参考:FFmpeg afade/acrossfade filter curves illustration ,
[000]
表示 [00]
经过 afade
处理后输出到 [000]
这个 stream,后续的操作都在 [00]
上进行。
[000][11]acrossfade=d=3:c1=desi:c2=desi[cf-0];[cf-0][ccc]acrossfade=d=3:c1=desi:c2=desi
[000][11]acrossfade
表示在 [000] 和 [11] 这两个相邻的对接文件之间启用 acrossfade
交叉淡入淡出效果,
d=3
表示交叉淡入淡出的时长为 3
秒,
c1=desi:c2=desi
表示两者中前一个文件的淡出效果曲线是 desi
,后一个文件的淡出效果曲线是 desi
,
[cf-0]
表示将这两个文件进行 交叉淡入淡出
后,会拼接到一个 stream
,这个 stream
使用 [cf-0]
引用。
音频裁剪/音量调整/播放速度调整
裁剪、音量调整、播放速度调整 这 3 个功能是可以同时进行的,所以放在一起说明。
ffmpeg \ -i input.mp3 \ -filter_complex "[0]atrim=end=170.0,asetpts=N/SR/TB[00];[0]atrim=start=172.0,asetpts=N/SR/TB[000];[00][000]concat=n=2:v=0:a=1[0000]; \ [0000]volume=2.0[00000]; \ [00000]atempo=2.0" \ -ab 256000 -ar 48000 output.mp3
裁剪-删除选中的部分:[0]atrim=end=170.0
表示取 [0]
这个 stream 的前 170.0
秒,[0]atrim=start=172.0
表示取 [0]
这个 stream 的 172.0
秒到结尾的部分,这两个 atrim
部分何在一起的效果就是删除 [0]
这个 stream 的第 170 - 172
秒的部分,
裁剪-保留选中的部分:[0]atrim=170.0:172.0[00]
保留第 170 - 172
秒之间的部分,
[00][000]concat=n=2:v=0:a=1[0000]
表示将 [00][000
拼接起来,输出到 [0000]
这个 stream,
[0000]volume=2.0[00000]
表示将音量放大到原来的 2
倍,
[00000]atempo=2.0
表示将播放速度提升到原来的 2
倍,
-ab 256000 -ar 48000
指定输入文件的 bit rate
和 sample rate
,一般取跟输入文件一样的数值。
音频添加背景音频
也就是让 2 段音频同时播放,难度在于:
每段音频都可以选择保留的片段,使用
atrim
filter;指定后播放的音频何时开始播放,使用
adelay
filter;
ffmpeg \ -i input1.mp3 -i input2.mp3 \ -filter_complex "[0]atrim=0.0:45.0[00];[1]atrim=30.0:45.0[11]; \ [00]volume=0.5[000];[1b]volume=2.0[111]; \ [111]adelay=30000.0|30000.0[1111]; \ [000][1111]amix[out]" \ -map '[out]' output.mp3
[111]adelay=30000.0|30000.0[1111]
指定 [111]
这个片段在在 30 秒后再开始播放,
[000][1111]amix[out]
混合 2 段音频得到输出。
ffmpeg 命令集的简单实用方法相关推荐
- Android客户端连接服务器- OKHttp的简单实用方法
文章目录 一 .OKHttp简介 二. OkHttp3使用 1.创建HTTPClient实例 2.Get请求 3.POST请求 三.Timeouts(超时) **写在前面:本文只是对OKHttp3的简 ...
- 【ffmpeg】最全简单实用教程|安装音频视频剪切融合拼接抽帧等
ffmpeg 实用教程(非常全) FFmpeg Download(Mac) brew ffmpeg 常用操作(最全最简单) 音频 音频转换格式 多个音频混音 改变音量大小 音频淡入淡出 调整音频速率 ...
- android源码编译 老罗,Rx_Android 的简单实用方法(参考老罗代码)
Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程, 那么就可以使用这种方 ...
- MobaXterm简单实用方法-通过SSH连接服务器
一.前言 MobaXterm如何连接远程服务器?MobaXterm是一款十分优秀的sshx远程控制软件,MobaXterm免费版内建多标签和多终端分屏,内建SFTP文件传输,功能非常的强大实用.在单个 ...
- php导出excel方法,PHP导出EXCEL简单实用方法
/** * 得到相应的列表字符串 * * @param $titArr 字段和标题的对应数组 * @param $data 数据的列表数组 * @param $fileName 文件的名字 * @pa ...
- linux telnet.class,Linux telnet简单实用方法
语法 telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]] 参数 -a 企图自动登录.除了用当前已登陆的用户名 ...
- java画笔覆盖在界面_Java画笔的简单实用方法
Java中提供了画笔,可以使用画笔做出界面上的任何东西,接下来先熟悉一下画笔的使用过程,以画一条线为例. 源码: import java.awt.Graphics; import java.awt.e ...
- java 画笔 粗细_Java画笔的简单实用方法
Java中提供了画笔,可以使用画笔做出界面上的任何东西,接下来先熟悉一下画笔的使用过程,以画一条线为例. 源码: import java.awt.Graphics; import java.awt.e ...
- 电脑里u盘的内容删除了怎么还原?简单实用方法分享
案例分享:"我的u盘插在电脑上,忘记拔下来了,不知道谁不小心给我删掉了,所有的东西全都没有了,都是我重要的一些资料,希望好心人帮我想想办法吧,没有备份的情况下如何才能还原?越详细的内容越好! ...
最新文章
- java joptionpane 例子_java JOptionPane类的介绍
- 学java的正确方法_学习Java编程 这10个技巧不容错过--中享思途
- VTK:交叉点 PolyData 过滤器用法实战
- 快速解决工作中遇到经典的括号匹配问题
- 刚刚,这几门保证就业的算法类课程,居然能免费听了!
- hsv 明度的范围_通过HSV转换的方式实现图片数据增强
- 2021中国家居行业洞察白皮书
- BT下载原理学习简介
- 牛客多校第九场 ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解...
- 纯JavaScript实现HTML5 Canvas六种特效滤镜
- MySQL单元三试题与答案_2016年3月三级MySQL数据库试题及答案
- 微信支付对账单的详细说明
- spring boot整合muybatis的错误
- 清华胡宇迪教授谈关于爱情、关于伴侣、关于承诺、关于人生、关于友情、关于微笑、关于生活、关于幸福...
- MySQL的SQL解析器是干什么的?底层原理是什么?
- GB28181平台对接接口详解
- 2022-06-08你抢不到的可达鸭,芯片成本只要几块钱KFC(-JPG)
- Linux下EPICS的安装与配置——Phoebus配置与PV连接
- 常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍
- Facebook商业模式分析