【实用工具】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

相关推荐
神仙别闹3 小时前
基于C#实现的(WinForm)模拟操作系统文件管理系统
java·git·ffmpeg
Fre丸子_17 小时前
ffmpeg之播放一个yuv视频
ffmpeg·音视频
yinqinggong19 小时前
从源码编译支持FFmpeg的OpenCV
opencv·ffmpeg
冰山一脚201320 小时前
ffmpeg添加sps,pps
ffmpeg
嘟嘟实验室2 天前
微信小程序xr-frame透明视频实现
微信小程序·ffmpeg·音视频·xr
泰勒朗斯2 天前
如何编译Opencv +ffmpeg linux 明明安装了ffmpeg但是opencv就是找不到
linux·opencv·ffmpeg
-Mr_X-2 天前
windows下srs流媒体服务器使用ffmpeg推流
ffmpeg
dvlinker2 天前
C++开源项目 VLC 源代码的交叉编译以及库的裁剪方法详解
ffmpeg·mingw-w64·msys2·cygwin·开源vlc·vlc编译·vlc裁剪
因我你好久不见3 天前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
cuijiecheng20183 天前
音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
ffmpeg·音视频