介绍
FFmpeg是一款跨平台的开源音视频处理工具,支持对视频和音频进行编码、解码、转换、剪切、合并、添加水印等多种操作。它是一个命令行工具,可以在Linux、Windows和Mac等操作系统上使用。
FFmpeg由法国程序员Fabrice Bellard创建,它最初是一个简单的MPEG视频解码器。随着时间的推移,FFmpeg得到了越来越多的贡献者和开发者的加入,它逐渐成长为一个功能强大的音视频处理工具。
FFmpeg支持多种音视频格式,包括常见的MP4、AVI、FLV、MOV、MP3、AAC等格式。它使用libavcodec库进行音视频编解码,使用libavformat库进行音视频封装和解封装,使用libavfilter库进行音视频过滤和处理。
FFmpeg有着非常广泛的应用领域。它可以用于视频编辑、视频转码、视频剪辑、视频处理、视频流媒体等领域。许多流行的媒体播放器和视频编辑软件都使用了FFmpeg的编解码器和库。
安装
# 安装
brew install ffmpeg
# 查看版本
ffmpeg -version
# 更新
brew upgrade ffmpeg
常见用法
视频剪切
ffmpeg -i ./in.mp4 -vcodec copy -acodec copy -ss 00:00:20 -to 00:05:30 ./out.mp4
设置视频大小
ffmpeg -i ./sea.mp4 -fs 19M output.mp4
删除视频中的音频
ffmpeg -i in.mp4 -map 0:0 -vcodec copy -acodec copy out.mp4
设置分辨率
ffmpeg -i video_1920.mp4 -vf scale=640:360 video_640.mp4 -hide_banner
设置视频的宽高比
ffmpeg -i video_320x180.mp4 -vf scale=320:240,setdar=4:3 video_320x240.mp4 -hide_banner
视频倒放,无音频
ffmpeg -i in.mp4 -filter_complex [0:v]reverse[v] -map [v] -preset superfast out.mp4
视频倒放,音频不变
ffmpeg -i in.mp4 -vf reverse out.mp4
音频倒放,视频不变
ffmpeg -i in.mp4 -map 0 -c:v copy -af "areverse" out.mp4
音视频同时倒放
ffmpeg -i in.mp4 -vf reverse -af areverse -preset superfast out.mp4
抽取音频
ffmpeg -i 3.mp4 -vn -y -acodec copy 3.aac
ffmpeg -i 3.mp4 -vn -y -acodec copy 3.m4a
提取视频或者叫做删除音频
ffmpeg -i Life.of.Pi.has.subtitles.mkv -vcodec copy -an videoNoAudioSubtitle.mp4
ffmpeg -i output.mp4 -c:v copy -an input-no-audio.mp4
为无声的视频添加音频
ffmpeg -i ../out/4in1.mp4 -i ./3.aac -vcodec copy -acodec copy output.mp4
合并多个视频
ffmpeg -i "concat:input1.mp4|input2.mp4" -c copy output.mp4
镜像视频
# 水平镜像
ffmpeg -i input.mp4 -vf "hflip" output.mp4
# 垂直镜像
ffmpeg -i input.mp4 -vf "vflip" output.mp4
# 同时水平和垂直
ffmpeg -i input.mp4 -vf "hflip,vflip" output.mp4
滤镜
调节亮度:使用
brightness
滤镜,值越大亮度越高,反之亮度越低。ffmpeg -i input.mp4 -vf "brightness=0.2" output.mp4
调节对比度:使用
contrast
滤镜,值越大对比度越高,反之对比度越低。ffmpeg -i input.mp4 -vf "contrast=1.5" output.mp4
调节锐化:使用
unsharp
滤镜,值越大锐化效果越明显。ffmpeg -i input.mp4 -vf "unsharp=5:5:-0.5:5:5:-0.5" output.mp4
调节高光:使用
highpass
滤镜,值越大高光越明显。ffmpeg -i input.mp4 -vf "highpass=f=10" output.mp4
调节色温:使用
colorbalance
滤镜,值越大色温越暖,反之色温越冷。ffmpeg -i input.mp4 -vf "colorbalance=rs=0.5:gs=0.5:bs=0.8" output.mp4
饱和度(saturation): 使用
eq=saturation
进行调节,值范围为-100到100,0为默认值。ffmpeg -i input.mp4 -vf eq=saturation=1.5 output.mp4
色调(hue): 使用
hue
进行调节,值范围为-180到180,0为默认值。ffmpeg -i input.mp4 -vf hue=h=30 output.mp4
色相(tone): 使用
colorbalance
进行调节,值范围为0到1,0为默认值。ffmpeg -i input.mp4 -vf colorbalance=hs=-0.5 output.mp4
去噪(denoise): 使用
nlmeans
或bm3d
进行调节,值范围为0到100,0为默认值。ffmpeg -i input.mp4 -vf "noise=alls=100:allf=t,eq=brightness=-0.1:contrast=1.1,hqdn3d=5:5:5:5" output.mp4
模糊(blur): 使用
boxblur
或gblur
进行调节,值范围为1到100,1为默认值。ffmpeg -i input.mp4 -vf "boxblur=10:1" output.mp4
多个滤镜可以组合使用,用逗号分隔,例如:
ffmpeg -i input.mp4 -vf "brightness=0.2,contrast=1.5,unsharp=5:5:-0.5:5:5:-0.5" output.mp4
高级用法
使用ffmpeg修改视频,如果有多条命令,请将输入的input.mp4和输出的output.mp4名称连贯起来,方便我直接复制粘贴,具体需要的操作如下:
- 删除视频第6-12秒
- 镜像视频
- 替换背景音乐为Advertime.mp3
- 调节亮度0.1,对比度1.2,锐化设置5:5:2
ffmpeg -i input.mp4 -ss 0.5 -to $(ffprobe -i input.mp4 -show_entries format=duration -v quiet -of csv="p=0")-0.5 -vf "hflip,boxblur=2,eq=brightness=0.1:contrast=2,unsharp=5:5:2" -an output.mp4