前言
FFmpeg是一个强大的多媒体处理工具,可以用于处理音频、视频和图像。
命令格式
bash
ffmpeg {1} {2} -i {3} {4} {5}
上面命令中,五个部分的参数依次如下。
bash
1.全局参数
2.输入文件参数
3.输入文件
4.输出文件参数
5.输出文件
常见命令行参数
bash
-c:指定编码器
-c copy:直接复制,不经过重新编码(这样比较快)
-c:v:指定视频编码器
-c:a:指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-y:不经过确认,输出时直接覆盖同名文件。
常用命令
- 查看文件源信息
bash
ffmpeg -i input.mp4 -hide_banner
- 转码视频格式
bash
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
- 调整视频大小
bash
ffmpeg -i input.mp4 -vf scale=640:480 output.mp4
- 提取音频
bash
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c:v copy -c:a copy output.mp4
- 合并视频和音频
bash
ffmpeg -i video.mp4 -i audio.aac -c:v copy -c:a aac -strict experimental output.mp4
- 添加水印
bash
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
- 提取视频帧
bash
ffmpeg -i input.mp4 -vf "select=eq(n\,100)" -vframes 1 output.jpg
- 改变音频音量
bash
ffmpeg -i input.mp3 -filter:a "volume=2.0" output.mp3
- 从视频中提取图片
bash
ffmpeg -i video.mp4 -r 1 -f image2 image-%3d.png
- 为音频增加封面图片
把音频变成视频,全程使用一张图片(比如专辑封面)
bash
ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
- 为视频增加字幕
bash
ffmpeg -i video.mp4 -i subtitles.srt -c:v copy -c:a copy -preset veryfast -c:s mov_text -map 0 -map 1 output.mp4
- 添加音轨
将外部音频加入视频,比如添加背景音乐或旁白
bash
ffmpeg \
-i input.aac -i input.mp4 \
output.mp4
- 获取视频总帧数
bash
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 gemfield.mp4
- 实时流媒体传输
FFmpeg可以通过网络将音视频流传输到远程设备或进行直播。例如,将摄像头捕捉到的视频流传输到远程服务器。
bash
ffmpeg -f dshow -i video="Camera" -c:v libx264 -preset ultrafast -tune zerolatency -f mpegts udp://192.168.0.1:1234
其中,-f参数指定输入格式,dshow表示使用DirectShow来捕捉视频;-i参数指定输入设备,video="Camera"表示使用摄像头作为输入;-c:v参数指定视频编码器,libx264表示使用H.264编码;-preset和-tune参数用于优化实时传输的性能;-f mpegts表示输出为MPEG-TS格式;udp://192.168.0.1:1234是远程服务器的地址
参考链接: