FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
适用平台:Linux、Windows、Mac OS X等
常规命令说明
代码语言:javascript复制-i——设置输入文件
-f——设置输出格式
-y——若输出文件已存在时则覆盖文件
-fs——超过指定的文件大小时则结束转换
-t——指定输出文件的持续时间,以秒为单位
-ss——从指定时间开始转换,以秒为单位
-title——设置标题
-timestamp——设置时间戳
-vsync——增减Frame使影音同步
-vn——不处理影像,于仅针对声音做处理时使用
-vcodec( -c:v )——设置影像影像编解码器,未设置时则使用与输入文件相同之编解码器
-b:a——设置每Channel(最近的SVN版为所有Channel的总合)的流量。(单位请引用下方注意事项)
-ar——设置采样率
-ac——设置声音的Channel数
-acodec ( -c:a ) ——设置声音编解码器,未设置时与影像相同,使用与输入文件相同之编解码器
-vol——设置音量大小,256为标准音量。(要设置成两倍音量时则输入512,依此类推。)
-c——指定输出文件的编码
-metadata——更改输出文件的元数据
-b:v——设置影像流量,默认为200Kbit/秒。(单位请引用下方注意事项)
-r——设置帧率值,默认为25
-s——设置画面的宽与高
-aspect——设置画面的比例
常规命令操作
代码语言:javascript复制# 以音频文件test.mp3示例
# 音频格式查看
ffmpeg -i test.mp3 -hide_banner
# 音频剪切 裁剪2分钟片段
ffmpeg -i .test.mp3 -vcodec copy -acodec copy -ss 00:00:00 -to 00:02:00 ./test_new.mp3 -y
# xx.amr格式转换mp3 (此命令未运行过,仅供参考)
ffmpeg -i xx.amr -ab 16k -ar 16000 -ac 1 -f mp3 a.mp3
# 修改采样率
ffpmeg -i test.mp3 -ar 16000 test.wav
# mp3等转wav
ffmpeg -i INPUT -ac CHANNELS -ar FREQUENCY -acodec PCMFORMAT OUTPUT
CHANNELS 可以为 1 or 2,
PCMFORMAT 可以为 pcm_u8 or pcm_u16 等
FREQUENCY 可以是 8000/11025/22050/44100
例:
ffmpeg -i D:Testaudiodizi.mp3 -ar 8000 -ac 1 -acodec pcm_u8 d:testaudiodizi.wav
就是输出8000采样率,1个声道,8bits的wav文件。
# 截取视频
方案一:ffmpeg -i input.mp4 -ss 开始时间 -t 持续时间 -vcodec copy -acodec copy -preset superfast output.mp4
方案二:ffmpeg -i source.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:15 ./cutout1.mp4
## 音视频分离
获取视频轨道
ffmpeg -i input.mp4 -an -vcodec copy output.mp4
获取音频轨道
方案一:ffmpeg -i input.mp4 -vn -acodec copy output.mp3
方案二:ffmpeg -i video.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3
# 添加背景音乐
ffmpeg -y -i input.mp4 -i input.mp3 -vcodec copy -acodec copy -t 时间 output.mp4
-t后面的时间表示持续时间,举例:时间=20 生成后的视频就是20秒 即使视频时长大于20秒
# 把视频的每帧转换成照片
ffmpeg -i video.flv image%d.jpg
字幕相关操作
(1)字幕文件的基本格式: xx.srt
代码语言:javascript复制1
00:00:00,000 --> 00:00:27,000
第一部分内容
2
00:00:27,000 --> 00:01:10,000
第二部分内容
3
00:01:10,000 --> 00:02:21,000
第三部分内容
(2)把字幕写到视频中
代码语言:javascript复制ffmpeg -i xx.srt xx.ass
ffmpeg -i xx.mkv -vf ass=xx.ass xx_new.mkv