视频处理¶
合并视频(拼接视频)¶
ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -codec copy out_mp4.mp4
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
join.txt文件
file /home/sk/myvideos/part1.mp4
file /home/sk/myvideos/part2.mp4
file '/home/sk/myvideos/part3.mp4'
file '/home/sk/myvideos/part4.mp4'
分割视频¶
# 切分视频文件为多个部分
ffmpeg -i part.mp4 -t 00:40:22 -c copy part1-1.mp4 -ss 00:40:22 -t 01:37:15 -codec copy part1-2.mp4 -ss 02:17:37 -codec copy part1-3.mp4
ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
# –s – 表示视频剪辑的开始时间。在我们的示例中,开始时间是第 50 秒。
# -t – 表示总的持续时间。
视频添加字幕¶
给mkv文件添加srt格式的软字幕:
ffmpeg -i input.mkv -i input.srt -c copy -c:s srt output.mkv
给mp4文件添加srt格式的软字幕(mkv格式本身支持字幕轨道,但mp4需要使用mov_text)
ffmpeg -i input.mp4 -i input.srt -c copy -c:s mov_text output.mp4
给mkv文件添加ass软字幕(mp4不支持ass编码格式的字幕流,mkv支持)
ffmpeg -i input.mkv -i input.ass -c copy -c:s ass output.mkv
增加字幕流
ffmpeg -i video.avi -i sub.ass -map 0:0 -map 0:1 -map 1 -c:a copy -c:v copy -c:s copy video.mkv
提取字幕流 1)原始文本输出
ffmpeg -i output.mkv -an -vn -bsf:s mov2textsub -scodec copy -f rawvideo sub.txt
ffmpeg -i output.mkv -an -vn -c:s copy -f rawvideo -map 0:s sub2.txt
2)ass格式输出
ffmpeg -i output.mkv -an -vn -scodec copy sub3.ass
视频提取截图¶
ffmpeg -ss 00:43:55 -i video.mp4 -f image2 -vframes 1 -y frame.png
# 注意将ss放到最前面可以加快速度, -y代表覆盖文件 -vframes代表帧数 -i代表输入,即in;-ss也可以使用单个数字,代表秒数,从0开始计算。
视频去固定水印¶
ffmpeg -i video.mp4 -vf "delogo=x=1680:y=60:w=160:h=55" -y new_1.mp4
这里-vf表示video filter, 其中delogo的参数代表水印的坐标和大小,把视频左上角作为坐标原点,横向为x轴,纵向为y轴。这种情况除非预先知道水印的位置和大小,否则不是特别方便,当然,准确识别水印位置也是一个难点,不是很轻易能实现的。 可能根据某些ffmpeg版本不同,需要加-strict experimental 参数,一种情况是比较老的版本音频ACC属于实验阶段,可以按情况设置或者升级ffmpeg版本。
测试
ffmpeg -i "你需要转换格式的文件(附带绝对路径).mkv" -vcodec copy -acodec aac "你想要转换成的格式(附带绝对路径).mp4"