FFMpeg 格式转换视频合成等常用命令介绍

发布于 2019-03-03 字数 3334 浏览 1046 评论 0

FFMpeg 工具非常好用,但是使用都是命令行的,Windows 用户可以直接下载编译好的 exe 可执行文件,解压到任意的磁盘目录,通过下面的命令就可以直接操作了。

格式转换

我想把用 iPhone 拍的 .MOV 文件转成 .avi 文件。最简单了,可以执行下面的命令:

ffmpeg -i D:\Media\IMG_0873.MOV D:\Media\output.avi

意思是把 D:\Media 目录下的源文件 IMG_0873.MOV(视频:h.264,音频:aac)转换成 output.avi(编码格式自动选择 为:视频 mpeg4,音频 mp3),目标文件仍然保存到 D:\Media 目录下。

问题来了:我想自己指定编码格式,怎么办呢?

一种方法是,通过目标文件的 扩展名(.flv、.mpg、.mp4、.wmv等)来控制,比如:

ffmpeg -i D:\Media\IMG_0873.MOV D:\Media\output2.flv

另一种方法是通过 -c:v 参数来控制,比如我想输出的视频格式是 H.265(警告:编码时间会比较长哦)。命令行如下:

ffmpeg -i D:\Media\IMG_0873.MOV -c:v libx265 D:\Media\output265.avi

注:可以先用 ffmpeg -encoders 命令查看一下所有可选的编码格式。

不再深究了,我们继续。

我发现源文件的图像帧尺寸是 1920x 1080,我不需要这么大,能有 720 x 480 就够了。

于是就要用上 -s 参数了。为了保证图像缩放后的质量,最好加上码流参数 -b:v。如下:

ffmpeg -i D:\Media\IMG_0873.MOV -s 720x480 -b:v 1500k D:\Media\output2.avi

还可以更简单一点,使用 -target 参数匹配行业标准,参数值可以是 vcd、svcd、dvd、dv、dv50 等,可能还需要加上电视制式作为前缀(pal-、ntsc- 或 film-)。如下:

ffmpeg -i D:\Media\IMG_0873.MOV -target pal-dvd D:\Media\output2dvd.avi

又来一个问题:我发现用手机拍的视频中,有些是颠倒的,我想让它顺时针旋转 90 度。

这时候,可以使用 -vf 参数加入一个过滤器,如下:

ffmpeg -i D:\Media\IMG_0873.MOV -vf "rotate=90*PI/180" D:\Media\output3.avi

注:如果想逆时针旋转 90 度,90 前面加个负号就可以了。

如果我只需要从源视频里截取一小段,怎么办呢?

比如从第2秒的地方开始,往后截取10秒钟。命令行可以这样:

ffmpeg -ss 2 -t 10 -i D:\Media\IMG_0873.MOV D:\Media\output4.avi

注:这种情况下,-ss和-t参数必须放在-i前面,表示是限定后面跟着的输入文件的。

视频合成

我发现用手机拍的视频有时候背景噪音比较大。怎么把噪音去掉,换成一段美妙的音乐呢?

使用 FFmpeg 也能轻易做到。

第一步:把源文件里的音频去掉,生成一个临时文件 tmp.mov

ffmpeg -i D:\Media\IMG_0873.MOV -vcodec copy -an D:\Media\tmp.mov

注:-vcodeccopy 的意思是对源视频不解码,直接拷贝到目标文件;-an 的意思是将源文件里的音频丢弃。

第二步:把这个无声的视频文件(tmp.mov)与一个音乐文件(music.mp3)合成,最终生成output.mov

ffmpeg -i D:\Media\tmp.mov -ss 30 -t 52 -i D:\Media\music.mp3 -vcodec copy D:\Media\output5.avi

为了保证良好的合成效果,音乐时长必须匹配视频时长。这里我们事先知道视频时长为52秒,于是截取 music.mp3 文件的第30秒往后的52秒与视频合成。另外为了保证音频时长截取的准确性,我们这里没有使用 -acodec copy,而是让音频重新转码。

还有一种情况:我们希望在一段视频上叠加一张图片。

可以简单实现如下:

ffmpeg -i D:\Media\IMG_0873.MOV -i D:\Media\logo.png -filter_complex 'overlay' D:\Media\output6.avi

视频播放

格式转换或合成之后,我们需要试着播放一下。播放器的选择很多。这里顺手用ffplay工具也行:

ffplay -i D:\Media\output6.avi

获取视频信息

有时候,我只是想看看这个视频文件的格式信息。可以用 ffprobe 工具:

ffprobe -i D:\Media\IMG_0873.MOV

如果你对这篇文章有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助。

扫码二维码加入Web技术交流群

您暂时不能评论!

管理员开启了需要登录才能够评论,你可以免费注册一个本站的账号。

还没有评论!

目前还没有任何评论,快来抢沙发吧!