引言
如果你没有合适的工具,编辑视频可能会是一件非常痛苦的事情。我们知道有很多工具可用于图像编辑,可以快速裁剪图像、调整图像大小或处理图像,但不能对视频执行批量的操作。
假设你要调整视频的大小,从中提取一个10秒的片段,然后将其转换为指定的格式。有更高效的方法吗?
嗯,是有的。不过那些体量臃肿的软件,它们的图形界面通常有一个陡峭的学习曲线!很多人想做视频的时候,往往会被吓退。好消息是,你不需要那些花里胡哨的商业软件,FFmpeg 已经为你准备好了,可以做许许多多很酷的事。
让我们继续看看,这个令人惊叹的工具是如何处理视频的。
学习时间
我们假设你已经在电脑上安装了FFmpeg,开箱即用。让我们看看一些常用的场景。
1 - 提取输入视频的一部分
假设想提取一个从时间戳1分45秒开始的23秒视频:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -ss 00:01:45.0 -codec copy -t 23 outputVideo.mp4
这里,“-ss”是时间偏移量参数,用于以“HH:MM:SS.ms”格式指定起始时间戳。“-t”参数指定视频剪辑的持续时间(以秒为单位)。
也可以将视频分割为多个部分:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -t 00:00:35 -c copy subVideo1.mp4 -ss 00:00:35 -codec copy subVideo2.mp4
上面的命令将创建两个输出视频,其中第一个将从开始到35秒,第二个将从35秒到结束。
2 - 转换视频格式
可以轻松地将一种视频格式转换为另一种视频格式:
代码语言:javascript复制ffmpeg -i inputVideo.h264 -c:v libx264 outputVideo.mp4
3 - 合并多个视频文件
如果有一堆视频,并且想要将它们全部合并,以创建一个大视频。可以很容易地完成此操作。我们只需要确保,所有这些视频都是相同的视频编解码器格式。
创建一个文本文件 videoFileList.txt,其中包含要合并的所有视频的列表:
代码语言:javascript复制ffmpeg -f concat -i videoFileList.txt -c copy mergedVideo.mp4
4 - 音频提取/剪切
要将音频提取为mp3文件,请执行以下操作:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -vn -ab 256 outputAudio.mp3
如果要将音频过滤掉,使其静音:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -an mutedVideo.mp4
5 - 创建动画gif文件
还可以基于视频的不同部分创建动画 gif 文件:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -vf scale=250:-1 -t 25 -r 15 outputImage.gif
“scale”过滤器指定GIF的宽度,“-t”指定持续时间(以秒为单位),“-r”指定帧速率。
6 - 从视频中提取图像帧
要提取特定图像帧,请执行以下操作:
代码语言:javascript复制ffmpeg -ss 00:00:23 -i inputVideo.mp4 -vf scale=600:-1 -vframes 1 image.jpg
这将提取输入视频文件中第23秒标记处的图像帧。
如果要提取所有图像帧,请执行以下操作:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -r 5 image_d.png
这里,‘-r’指定帧速率。上述命令每秒保存5帧,并存储为 image_00003.png 等一系列图片。
7 - 合并视频和音频文件
ffmpeg 可以合并不同的视频和音频,只需确保它们对齐。
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -i inputAudio.mp3 -c:v copy -c:a aac -strict experimental outputVideo.mp4
8 - 调整视频画面大小
调整视频图像大小,以创建更大或更小的视频文件:
代码语言:javascript复制ffmpeg -i inputVideo.mp4 -s 640x480 -c:a copy outputVideo.mp4
写在最后
是不是与 GUI 用户界面的软件有很多不同。自始至终我们不需要打开任何窗口,就完成了视频编辑,而且也完全可以制作成批处理脚本,瞬间提升工作效率。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。