对视频指定区域截图
ffmpeg -i FILE0174.avi -vf crop=140:30:43:663 -r 1 -q:v 2 -vframes 1 -f image2 image-%d.jpeg
-vf crop=140:30:43:663
表示从x=43,y=663处开始截取x=140,y=30的图片
-vframes
表示总共要截多少张
-f image2
表示输出图片的格式,比如Image2
q:v 2
图片质量
image-%d.jpeg
生成图像的文件名,可以加上完整路径,%d会使文件名按整数编号,如上述生成图像为image-1.jpeg, image-2.jpeg, …
-t
持续时间,如-t 4表示持续4s
-ss
起始时间,如-ss 01:30:14,从01:30:14开始
-s
格式大小,如-s 640x360
-y
覆盖,直接使用
-r
每秒提取的帧数,如上面为每秒1帧,即一张图像
截取视频
ffmpeg -ss 00:00:00 -t 01:07:53 -i m1.mp4 -c copy m2.mp4
-c copy
指-c:v copy
和 -c:a copy
的合体,指视频和音频都不要重新编码,因为默认是重新编码的
注意:如果指定了-ss
参数后,开头视频有问题,则可以深度删除该参数,即只保留-t
参数,分割后看实际效果的。
合并视频
首先在需要合并的视频s所在的文件夹下执行如下命令
for %1 in (./*.mp4 ./*.mkv ./*.avi) do echo file %1 >>1.txt
自动生成1.txt
文件,内容如下
file MOVA0046.avi
file MOVA0047.avi
file MOVA0048.avi
file MOVA0049.avi
file MOVA0050.avi
file MOVA0051.avi
file MOVA0052.avi
file MOVA0053.avi
file MOVA0054.avi
然后使用如下命令对文件进行不转码的合并
ffmpeg -f concat -i 1.txt -c copy m1.avi
分离音视频流
// 只提取视频
ffmpeg -i MOVA00001.AVI -c:v copy -an m1.mp4
// 只提取音频
ffmpeg -i MOVA00001.AVI -c:a copy -vn m2.mp4
合并音视频流
ffmpeg -i 01.mp4 -i 01.wav -c:v copy merge.mp4
音量标准化调整
参考文章
ffmpeg -i 01.mp4 -filter:a "loudnorm=i=-14:tp=0.0" 02.mp4
也可以自己使用上面提到的分离和合并的方法把音频分离出来后,使用如gold wave之类的软件进行编辑,然后再合并回去
下载带key的m3u8
参考文章
需要先手动把m3u8和对应的key文件下载下来,然后将m3u8文件中key的uri改为本地的key文件的路径,然后再执行下面的命令
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,tls,http,https,crypto,tcp" -i index.m3u8 -c copy out.mp4