FFmpeg 命令行工具 - 高级特性、Web 音视频、调试和测试

这篇文章讲解 FFmpeg 命令行工具中使用高级特性、Web 音视频、调试和测试相关的功能。
高级特性
拼接视频文件
多个视频文件按顺序拼接在一起:
ffmpeg -i city.mp4 -i car.mp4 -filter_complex concat video.mp4
移除水印
通过 delogo 过滤器来处理:
ffmpeg -i eagles.mpg -vf delogo=x=700:y=0:w=100:h=50:t=3:show=1 nologo.mpg
修复抖动
通过 deshake 过滤器来处理:
ffmpeg -i travel.avi -vf deshake fixed_travel.avi
添加颜色框
通过 drawbox 过滤器来处理:
ffmpeg -i ship.avi -vf drawbox=x=150:w=600:h=400:c=yellow ship1.avi
帧数检测
ffmpeg -i city.mp4 -f null /dev/null
输出结果中 frame 就是帧数:
frame= 990 fps=833 q=-0.0 Lsize=N/A time=00:00:33.00 bitrate=N/A speed=27.8x
video:518kB audio:5684kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
检测 dark frames
通过 blackdetect 过滤器来处理:
ffmpeg -f lavfi -i mptestsrc -vf blackdetect -f sdl 'test'
通过 blackframe 过滤器来处理:
ffmpeg -f lavfi -i mptestsrc -vf blackframe -f sdl 'test'
选择特定的帧来输出
通过 select 过滤器来处理:
ffmpeg -i input.avi -vf select="gte(t\,20)*lte(t\,25)" output.avi
缩放视频
通过 setdar 或者 setsar 过滤器来设置屏幕高宽比进行缩放:
ffplay -i input.avi -vf setdar=16/9
ffplay -i input.avi -vf setsar=1.234
显示视频帧的详细信息
通过 showinfo 过滤器:
ffmpeg -report -f lavfi -i testsrc -vf showinfo -t 10 showinfo.mpg
音频频谱
通过 showspectrum 过滤器:
ffmpeg -i audio.mp3 -vf showspectrum audio_spectrum.mp4
音频波形显示
通过 showwaves 过滤器:
ffmpeg -i music.mp3 -vf showwaves waves.mp4
一次生成多个格式
ffmpeg -i clip.avi clip.flv clip.mov clip.mp3 clip.mp4 clip.webm
过滤器图使用额外媒体输入
ffmpeg -i video.mpg -vf movie=logo.png:sp=5[a];[in][a]overlay video1.mp4
Web 音视频
浏览器
主流浏览器对 H5 音视频格式的支持:
HTML5 Audio
<audio controls='controls' loop='loop'>
<source src='music.mp3' type='audio/mpeg' />
<source src='music.ogg' type='audio/ogg' />
Audio element is not supported in your browser, please update.
</audio>
HTML5 Video
<video controls='controls' loop='loop' width='640' height='480'>
<source src='videoclip.mp4' type='video/mp4' />
<source src='videoclip.webm' type='video/webm' />
video element is not supported in your browser, please update.
</video>
调试和测试
生成测试报告
带上 -report 参数就可以生成测试报告 ffmpeg-yyyymmdd-hhmmss.log:
ffmpeg -report -i live.mp4 -vf showinfo -t 10 showinfo.mpg
调试
带上 -debug 参数,后面再跟上具体类型:
ffmpeg -debug mmco -f lavfi -i mptestsrc -t 0.5 output.mp4
带上 -debug_ts 参数,在处理过程中会打印出时间戳信息:
ffmpeg -debug_ts -f lavfi -i mptestsrc -t 0.1 output.mp4
带上 -fdebug ts 参数,在处理过程中会打印出更多时间戳信息:
ffmpeg -fdebug ts -f lavfi -i mptestsrc -t 0.1 output.mp4