ChrisKim
Do not go gentle into that good night.
颢天

FFmpeg 日常使用指南

有时我们可能会有视频裁剪、连接,或是提取视频音频、转码的需求,这时我们一般就会求助于百度上眼花缭乱的各种软件。然而这些软件并不省心,要么要充值,要么有广告水印,限制颇多。或者我们可以使用Premiere这种专业剪辑软件,但是如果你只是想裁个视频,是不是有点杀鸡用牛刀呢?

FFmpeg是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

https://zh.wikipedia.org/wiki/FFmpeg

FFmpeg是一个强大的视频播放和编辑程序,它丰富的功能完全可以满足日常需求,并且无广告、干净迅捷。可惜它是一个命令行程序,没有可视化界面,需要敲命令使用,本篇文章便整理了FFmpeg日常使用的基础命令用法,方便大家使用(其实也作为自己的备忘录用啦)。

FFmpeg比较适合偶尔有轻度视频编辑需求的用户(当然它的功能十分丰富),比如下载的b站视频和音频要合并,或是flv要转成mp4,亦或是要提取视频中的音频。


下载与启动

因为FFmpeg是开源软件,因此可以直接免费获取。

FFmpeg官网:https://ffmpeg.org/
我的云盘分享:https://run.sh.cn/ffmpeg

注意:官网下载不要点击最大的那个按钮,那个是未编译的源代码。点击Windows按钮,下载已编译的可执行文件。(如果懒得找,也可以直接下载我上传到云盘的)

https://assets.zouht.com/img/blog/2299-01.webp

然后解压下载的压缩包,得到两个文件夹。

doc文件夹为文档文件夹,里面的内容可以理解为官方教程,但是我们没必要学这么清楚,况且文档是全英文的,所以忽略就行。

bin文件夹便是成品程序了,里面包含三个程序。ffmpeg.exe拥有转码等视频功能;ffplay.exe为播放器,可以播放视频;ffprobe是用于查看文件格式的应用程序,我一次也没用到过。

这三个程序都不是直接点击启动的,需要在文件夹内按住SHIFT,再右键,选择“在此处打开 Powershell 窗口”

https://assets.zouht.com/img/blog/2299-02.webp

然后就可以在这个命令行内输入指令操作程序了。

日常使用

因为本指南主要面向于轻度用户,所以指令都最简化。

注意:所有文件都需指定目录,若不指定则默认文件在ffmpeg.exe所在的文件夹内。若文件目录或文件名带空格,请用英文引号” “扩起目录。

视频转码

通用情况

用法:ffmpeg -i [源文件] [额外参数] [新文件]
e.g. .\\ffmpeg.exe -i .\\input.flv .\\output.mp4

编码不变的情况(例如b站视频flv转mp4)

用法:ffmpeg -i [源文件] -vcodec copy -acodec copy [新文件]
e.g. .\\ffmpeg.exe -i .\\input.flv -vcodec copy -acodec copy .\\output.mp4

注意:这种转码方式速度极快,几乎不耗CPU资源,速度相当于纯复制文件,实测比上面快200倍。但此方法仅限前后编码方式不变的情况,需要你确定需求后使用。

视频裁切

用法:ffmpeg -ss [起始时间] -t [裁切片段长度] -i [源文件] -vcodec copy -acodec copy [裁切片段]
e.g. .\\ffmpeg.exe -ss 01:23:45 -t 00:00:30 -i .\\input.flv -vcodec copy -acodec copy .\\output.flv

视频拼接

使用文件列表

用法:ffmpeg -f concat -i [列表文件] -c copy [输出]
e.g. .\\ffmpeg.exe -f concat -i .\\list.txt -c copy .\\output.flv

注意:列表文件为一个txt文本文档,格式示例如下:

file ./clip1.flv
file ./clip2.flv

file ./clip3.flv

不使用文件列表(有可能出问题)

用法:ffmpeg -i "concat:[文件1]|[文件2]|[文件3]" -c copy [输出]
e.g. .\\ffmpeg.exe -i "concat:clip1.flv|clip2.flv|clip3.flv" -c copy output.flv

音画合并

编码不变的情况

用法:ffmpeg -i [视频] -i [音频] -c copy [输出]
e.g. .\\ffmpeg.exe -i video.mp4 -i audio.wav -c copy output.mkv

注意:此方法仅限前后编码方式不变的情况,需要你确定需求后使用。

重新编码的情况

用法:ffmpeg -i [视频] -i [音频] -c:v copy -c:a aac -strict experimental [输出]
e.g. .\\ffmpeg.exe -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4

提取音频

提取完整音频

用法:ffmpeg -i [视频输入] -q:a 0 -map a [音频输出]
e.g. .\\ffmpeg.exe -i video.mp4 -q:a 0 -map a audio.mp3

提取一段音频

用法:ffmpeg -i [视频输入] -ss [起始时间] -t [裁切片段长度] -q:a 0 -map a [音频输出]
e.g. .\\ffmpeg.exe -i video.mp4 -ss 00:10:00 -t 00:00:30 -q:a 0 -map a output.mp3

去除音频

用法:ffmpeg -i [视频输入] -map 0:0 -vcodec copy [视频输出]
e.g. .\\ffmpeg.exe -i .\input.mp4 -map 0:0 -vcodec copy output.mp4

其他

ffmpeg的功能远不止这些,以上只是我常用的几个用法分享给大家,如果之后有新的使用命令,我也会继续补充。其实ffmpeg的转码参数上面几乎没有解释,容器类别和编码类别都省略没谈,如果感兴趣可以自己研究。

详细参数

下面是详细参数列表,命令以.\\ffmpeg.exe开头,后加参数控制程序。

主要参数
-i——设置输入文件名。
-f——设置输出格式。
-y——若输出文件已存在时则覆盖文件。
-fs——超过指定的文件大小时则结束转换。
-t——指定输出文件的持续时间,以秒为单位。
-ss——从指定时间开始转换,以秒为单位。
-t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
-title——设置标题。
-timestamp——设置时间戳。
-vsync——增减Frame使影音同步。
-c——指定输出文件的编码。
-metadata——更改输出文件的元数据。
-help——查看帮助信息。

影像参数
-b:v——设置影像流量,默认为200Kbit/秒。(单位请引用下方注意事项)
-r——设置帧率值,默认为25。
-s——设置画面的宽与高。
-aspect——设置画面的比例。
-vn——不处理影像,于仅针对声音做处理时使用。
-vcodec( -c:v )——设置影像影像编解码器,未设置时则使用与输入文件相同之编解码器。

声音参数
-b:a——设置每Channel(最近的SVN版为所有Channel的总合)的流量。(单位请引用下方注意事项)
-ar——设置采样率。
-ac——设置声音的Channel数。
-acodec ( -c:a ) ——设置声音编解码器,未设置时与影像相同,使用与输入文件相同之编解码器。
-an——不处理声音,于仅针对影像做处理时使用。
-vol——设置音量大小,256为标准音量。(要设置成两倍音量时则输入512,依此类推。)

注意事项
以-b:v及-b:a参数设置流量时,根据使用的ffmpeg版本,须注意单位会有kbits/sec与bits/sec的不同。(可用ffmpeg -h显示说明来确认单位。)
例如,单位为bits/sec的情况时,欲指定流量64kbps时需输入 -b:a 64k;单位为kbits/sec的情况时则需输入 -b:a 64。
以-acodec及-vcodec所指定的编解码器名称,会根据使用的ffmpeg版本而有所不同。例如使用AAC编解码器时,会有输入aac与libfaac的情况。此外,编解码器有分为仅供解码时使用与仅供编码时使用,因此一定要利用ffmpeg -formats确认输入的编解码器是否能运作。

引用来源:https://zh.wikipedia.org/wiki/FFmpeg
本文链接:https://www.zouht.com/2299.html
本文使用:CC BY-NC-SA 4.0 许可
# #
首页      教程      FFmpeg 日常使用指南

发表回复

textsms
account_circle
email

  • 之前用过,用来合并弹幕和视频文件

    4 年前 回复
  • 有幸欲得之一用,感谢博主,辛苦啦 :mrgreen:

    4 年前 回复
  • Fotink

    突然发现v2ex被墙了,因为我博客头像的cdn用的v2ex的节点,现在都显示不出来了。。难受

    4 年前 回复

颢天

FFmpeg 日常使用指南
有时我们可能会有视频裁剪、连接,或是提取视频音频、转码的需求,这时我们一般就会求助于百度上眼花缭乱的各种软件。然而这些软件并不省心,要么要充值,要么有广告水印,限制颇多。或者…
扫描二维码继续阅读
2021-03-05