FFMPEG 是一套可以用来记录, 转换数字音频, 视频, 并能将其转化为流的开源计算机程序. 采用 LGPL 或 https://baike.baidu.com/item/GPL/2357903 许可证. 它提供了录制, 转换以及流化音视频的完整解决方案. 它包含了非常先进的音频 / 视频编解码库 libavcodec, 为了保证高可移植性和编解码质量, libavcodec 里很多 code 都是从头开发的.
适用平台: Linux,Windows,Mac OS X 等
常规命令说明
-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-- 设置画面的比例
常规命令操作
- # 以音频文件 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:\Testaudio\dizi.mp3 -ar 8000 -ac 1 -acodec pcm_u8 d:\testaudio\dizi.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
- 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) 把字幕写到视频中
- FFMPEG -i xx.srt xx.ass
- FFMPEG -i xx.mkv -vf ass=xx.ass xx_new.mkv
来源: https://www.qcloud.com/developer/article/1922906