FFmpeg
ffmpeg是一套综合的音视频编辑工具,支持录屏、编码、剪辑、混合等多种复杂功能,支持市面上大部分的编码格式转换,常见的“格式工厂”、“小丸工具箱”、“Potplayer”等底层均为ffmpeg。配合bash/cmd命令行工具,可以提供强大的批量编辑和处理音视频内容的功能。
目前已应用场景
- 将序列帧批量转换为cfhd编码,作为后期处理的预合成。在极小损失质量的情况下,减少磁盘频繁读取序列帧的压力。
- 抓取M3u8网页视频流,为视频批量添加水印
- 各种格式和编码的转换(mov转mp4、cfhd转mpeg4)
- 给影视素材批量上luts
- 截取视频片段输出gif
- 视频缩放大小和码率输出,压缩成一个小的视频
windows安装(基于gitbash)
-
FFMPEG下载,选择下载对应系统版本如 ffmpeg-N-104333-g13141339c1-win64-gpl.zip。将文件解压在一个固定不常移动的地方如 “C:\Program Files”之下。
-
gitbash下载,带有一个bash控制台和虚拟shell环境,可以在任意地方调用bash
-
安装完成后,可以在任意文件夹右键调出“gitbash”并运行“ffmpeg.exe”,如有反应则为安装成功
使用案例详解
1 在不重新编码视频的情况下,替换音频
ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4
2 将渲染帧序列,编码为视频
ffmpeg -i Cam03_0923_00%02d.png -c:v mpeg4 1.mp4
3 ffmpeg抓取blob协议链接视频
这里记录了探索过程,操作上建议直接看3 修订
在网上需要下载一些视频,发现视频引向的协议是blob:// 开头,没办法直接下载。
使用ffmpeg
直接下载m3u8视频流。
- 准备
ffmpeg
: - windows下载(bin文件夹中)
- Mac下载(mac如右图,下载最新即可)
-
运行cmd / 终端,切换到软件所在路径。
-
按照基本命令下载ffmpeg -i [m3u8地址] 输出文件名.mp4
3 修订
使用猫抓可以直接在线调用ffmpeg下载m3u8
操作备忘录
- 将mov格式转码为mp4格式(不转换编码,需要编码支持)
ffmpeg -i input.mov output.mp4
- 视频转序列帧
ffmpeg -i video.mov frames.%04d.jpg
- 序列帧转为视频,cfhd、libx264等常用编码都可
ffmpeg -i /test/test%04d.jpg -vcodec mpeg4 test.mov
- 三个视频 01.mp4,02.mp4,03.mp4,按顺序连接合并成一个。
ffmpeg -i "concat:01.mp4|02.mp4|03.mp4" -c copy out.mp4
- 给视频添加水印(可批量)。将logo.png作为水印,添加到离左上角(顶部和左边)分别20个像素位置。
ffmpeg -i in.mp4 -i logo.png -filter_complex "overlay=20:20" out.mp4
- 截取一部分视频作为gif动图。例如:将视频的7.5秒到8.5秒截取,输出gif动图。
ffmpeg -i in.mp4 -ss 7.5 -to 8.5 -s 640x320 out.gif
- 把视频缩放到原来一半尺寸大小
ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi
- 缩放指定尺寸
ffmpeg -i input.mp4 -s 720x480 -c:a copy output.mp4