![6954d85ddcfd17686c9665c9c145ed49.png](https://i-blog.csdnimg.cn/blog_migrate/525e16188f65629237cb8892833f6474.jpeg)
FFmpeg这个名字包含两个部分:
第一部分:FF(Fast Forward),我们太熟悉了,就是快进,播放视频的快进功能。
第二部分:mpeg(Moving Picture Experts Group),字面含义是“动态图像专家组”,代表一种视频编码标准,我们经常观看的mp4格式的视频,其全称就是MPEG-4。
将两部分 FF+mpeg 合起来,从字面上理解 FFmpeg,就是快速播放视频,稍微引申一下则是‘快速处理视频流‘。
![cd8919f4e9c662e4cde4ce23c8e7f4e4.png](https://i-blog.csdnimg.cn/blog_migrate/e6eb34844f5a740aa48ab95918f7ee0e.jpeg)
事实上,ffmpeg这个软件的主要功能也正是如此,官方的定义为:
A complete, cross-platform solution to record, convert and stream audio and video.
为刻录转换视频流与音频流提供完备且跨平台最终解决方案。
FFmpeg不仅功能强大,而且完全开源免费,广泛应用于工业界。
![68cac1ffd86a44bc369913153b661493.png](https://i-blog.csdnimg.cn/blog_migrate/2722bc9e3cb93f5bffccad5d84ddf831.jpeg)
本文将以一首好听的歌曲 'awake-my-soul' 为例,详细阐述如何使用 FFmpeg 玩转西瓜视频和头条号。
1.裁掉片头和片尾
这首歌曲的前奏和尾声拖得比较长,快进播放的过程中,重新界定好合适的起始时间和终止时间。
![d9affdfa854d4f8821e70c207c4423d0.png](https://i-blog.csdnimg.cn/blog_migrate/b6091b3158edbfba5a4bb3544e47ad9d.jpeg)
上图中播放终止时间设定在 04:28秒,启示时间我选取的是 00:03秒以跳过开头的黑屏部分。
$ ffmpeg-y # 1.全局变量,不经询问,直接覆盖输出文件-ss 00:00:03 -to 00:04:28 # 2.起始时间和终止时间-i Awake-My-Soul-Live--Hillsong-Worship.webm # 3.输入文件-codec copy # 4.指定编码方式Awake-My-Soul-Live--Hillsong-Worship-Trimmed.webm # 5.输出文件
运行后,秒内就能完成。
![4a6c2bbce8afb20fd0a629ef38be0a0c.png](https://i-blog.csdnimg.cn/blog_migrate/b398272057d156317727b5a5056cf62d.jpeg)
ffmpeg的命令参数分为五个部分,我们逐行分析:
第一部分:全局变量
-y # 1.全局变量,不经询问,直接覆盖输出文件
-y (yes),表示不经问询,直接覆盖输出文件。
第二部分:输入文件的参数
-ss 00:00:03 -to 00:04:28 # 2.起始时间和终止时间
-ss 是 seek start的缩写,找寻起始点;
-to 是 指定起始点。
第三部分:输入文件名
-i Awake-My-Soul-Live--Hillsong-Worship.webm # 3.输入文件
-i 是 --input 输入文件
第四部分:输出文件参数
-codec copy # 4.指定编码方式
-codec 指定编码方式,copy的含义是不要重新编码,直接复制原视频流。
第五部分:输出文件名
Awake-My-Soul-Live--Hillsong-Worship-Trimmed.webm # 5.输出文件
在原文件名后面后缀Trimmed。
小结ffmpeg的命令参数格式为:
$ ffmpeg [全局参数] [输入文件参数] -i [输入文件] [输出文件参数] [输出文件]
2.发布视频
上传音乐之后,西瓜视频提供了在视频中选取封面的服务。
![ec09982475e810b7ff06cee5d23f7b98.png](https://i-blog.csdnimg.cn/blog_migrate/a1167dbfa8c17b265457a7cb7f11b98e.jpeg)
但是系统默认只提供12张封面给用户选择。碰上一张满意作品需要积攒很多运气。而 FFmpeg 可以几分钟内提供成千上万张视频截图供选择。
3.选取封面
截取封面的命令很简单。
$ ffmpeg -i Awake-My-Soul-Live--Hillsong-Worship-Trimmed.webm -vf fps=1 -q:v 1 Awake-My-Soul-Live--Hillsong-Worship-%03d.png
涉及到新的命令参数 -vf,vf 是 -filter:v 的简写形式,对视频过滤。
我们扫一眼其工作原理:
![449876397912d7be6c0c82ba944057a4.png](https://i-blog.csdnimg.cn/blog_migrate/83d41e3c8ec3b64b1a9bbed18067887d.jpeg)
fps=1 (frame per second = 1),含义是每秒截取一帧。有趣的是,如果设置为 fps=2,其含义并非每2秒截取一帧,而是一秒两帧。每两秒截取一帧的正确写法是 fps=0.5。
‘-q:v 1’ -q 是 quliaty,v是video,指定输出质量为1,最高为0。
最后输出文件名中的 Awake-My-Soul-%03d.png,%03d是输出序列文件的写法。
运行之后,生成了268张照片
![3f6e2d9518be6c4822eb92eeb6624975.png](https://i-blog.csdnimg.cn/blog_migrate/32c576c72b90b1fd66db03c6db4744e0.jpeg)
快速浏览之后,选取一张满意封面,后缀关键词 cover,然后删除其他图片。
rm Awake-*[0-9].png
运行之后,目录下就只剩下一张最终选择的封面。
![0203c98bb7cca2f4d128b15ba8f8dd97.png](https://i-blog.csdnimg.cn/blog_migrate/7e7dde31687050ddd57d6a38f8034550.jpeg)
封面上传之后,就可以发布出去。
![f6fdb39dcdf8b6aeaf13a2ad620e0d62.png](https://i-blog.csdnimg.cn/blog_migrate/739ca455aff9e4ce644dca9c83101280.jpeg)
但是,我们还可以更进一步,给音乐添加中文字幕。
4.添加字幕文件
中文字幕文件已经提前制作好,我们将其添加的音乐视频中。
![9b02780c9364a182bafe6c88f3bd3c62.png](https://i-blog.csdnimg.cn/blog_migrate/eeba1f4ead327865ccf65421c0d7e7d1.jpeg)
由于西瓜视频不支持软字幕,因此字幕只能通过硬编码的方式嵌入其中,这需要耗费一些时间和计算机的运算量。
$ ffmpeg -i Awake-My-Soul-Live--Hillsong-Worship.webm -vf subtitles=Awake-My-Soul-Live--Hillson$-Worship.srt Awake-My-Soul-Live--Hillsong-Worship-Burnin.webm
上例的命令,同样使用 -vf 参数,并加上了字幕文件 subtitles=Awake-My-Soul-Live--Hillson$-Worship.srt,输出文件后缀 Burnin。
命令开始运行后,站起身来,喝杯咖啡,走动走动,5分钟后回来查看运行结果。
![237fb0308f665a1130c8625109a5e7a0.png](https://i-blog.csdnimg.cn/blog_migrate/9bfab81ff41e1b302f3a6d0bc27ccf09.jpeg)
舒筋活络重新就位之后,播放检查字幕添加后的效果
![72b43c05ba724bef230e3db706d92e6f.png](https://i-blog.csdnimg.cn/blog_migrate/68ab001c8a70d33acead1f436ef41e49.jpeg)
这时,再重新裁掉片头和片尾后,发布到西瓜视频上。
![34316bb3857dd6690c80998e603b8701.png](https://i-blog.csdnimg.cn/blog_migrate/de1043a0c1116291e756b0b17a8f3729.jpeg)
5.发布音频
最后一步,我们将音乐视频转换成音频格式发布到头条号的音频专辑中。
首先查看视频文件的音频格式
![8208a23459812e8124e90cdd48df6568.png](https://i-blog.csdnimg.cn/blog_migrate/ddc135eade8a0a90a63f129bacd6da20.jpeg)
从上图的‘Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)’可知,其音频格式为 opus。而头条号的音频专辑不支持这个格式。
支持 MP3 ,MP4 ,3GP ,AVI ,FLV ,RMVB ,RM ,M4A ,FLAC , WAV 等文件格式,音频文件≤2G
既然如此,就不能使用简单的视频转换方式,比如
$ ffmpeg -i input.mkv -vn -c:a copy output.opus
必须得硬编码转换成MP3格式
$ ffmpeg -i Awake-My-Soul-Live--Hillsong-Worship-Trimmed.webm -q:a 0 -map a Awake-My-Soul-Live--Hillsong-Worship.mp3
涉及的新的参数 -q:a 0,与前面的 -q:v 1 相同,此处指定输出的音频(audio)为最高质量(quality)的0。
-map a 指定其输出的格式为音频(audio),
最后发布到音频专辑。
![9f721826a3c1b4618c1301538ebb70f7.png](https://i-blog.csdnimg.cn/blog_migrate/430bd4ce410036355feed7dd6b432583.jpeg)
6.收尾总结
![70e15a67ff40c8fb5af00f868a3d6d55.png](https://i-blog.csdnimg.cn/blog_migrate/99f7a51a485290707d61fdc70130da6c.jpeg)
本文我们从拆解FFmpeg出发,初步窥探了其基本用法,总结如下:
- ffmpeg命令的基本格式为:
ffmpeg [全局参数] [输入文件参数] -i [输入文件] [输出文件参数] [输出文件]
- 裁掉片头和片尾
ffmpeg -ss 00:00:04 to 00:04:30 -i sample.mkv -codec copy sample-trimmed.mkv
- 选取封面
ffmpeg -i sample.mkv -vf vps=1 -q:v 1 sample-%03.png
- 添加字幕
ffmpeg -i sample.mkv -vf subtitles=sample.srt sample-burnin.mkv
- 转成MP3音频
ffmpeg -i sample.mkv -q:a 0 -map a sample.mp3
倘若对FFmpeg更多的高阶用法感兴趣,惟盼留言探讨,我们共同提高。
![2df78822f02424339af518f8bbbdc1dc.png](https://i-blog.csdnimg.cn/blog_migrate/96c80377a124af2e61dc8b92b077cb6e.jpeg)