【实用工具】FFmpeg常用的命令

前言

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是远程服务器的地址

参考链接:

30分钟带你入门,20个 FFmpeg操作命令,包你学会 - 知乎

FFmpeg 视频处理入门教程 - 阮一峰的网络日志

FFmpeg教程(超级详细版) - 掘金

FFmpeg 实用命令 --- FFmpeg 教程 文档

FFmpeg的使用指南:从入门到精通 |21xrx.com

相关推荐
aqi004 小时前
FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频
android·ffmpeg·音视频·直播·流媒体
道剑剑非道20 小时前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器 完善
开发语言·qt·ffmpeg
毒果20 小时前
FFmpeg 低延迟同屏方案
ffmpeg·同屏
aqi001 天前
FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码
ffmpeg·音视频·直播·流媒体
梧桐樹下2 天前
FFmpeg avformat_open_input函数分析
ffmpeg
道剑剑非道2 天前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
开发语言·qt·ffmpeg
IOsetting2 天前
Ubuntu24.04 交叉编译 aarch64 ffmpeg
ffmpeg
却道天凉_好个秋2 天前
ffmpeg(三):处理原始数据命令
ffmpeg
@残梦2 天前
129、QT搭建FFmpeg环境
开发语言·qt·ffmpeg
阿飞__3 天前
C++ 使用 ffmpeg 解码本地视频并获取每帧的YUV数据
c++·ffmpeg·音视频