说到音视频处理就不得不提到 ffmpeg 这个开源的工具,虽然自己之前也就开始使用,但是零零散散的笔记与需求不是很多再加上偶尔只是一次的使用,所以也就没怎么想着来写这篇文章,这次我想着把存储已久的文章汇集一下 (虽然好多都没记,只好自己补充下啦)
视频转格式
| |
视频转音频
| |
-vn:表明我们已经在输出文件中禁用视频录制。
视频重新编码
有时候视频的编码格式是损坏的,在部分设备下播放是较为卡顿的,这个时候就需要重新编码
| |
这会用 x264 重新编码视频,用 aac 重新编码音频
转换为无声 webm 视频
| |
其中:
-an:关键参数,用于去除声音-c:v libvpx-vp9:指定视频编码格式 (vp9 是较为通用格式,如果追求极速转换可使用libvpx)-crf 30:控制质量,通常在 0-63 之间,数字越小,画质越好,文件越大-b:v 0:当使用 vp9 编码时,通常将比特率设为 0,让-crf参数来决定画质
转换为 GIF
使用 -loop 0 参数使其循环播放
| |
如果需要背景透明的话,分为两种情况
一种是原视频就是有透明通道 (如 ProRes 4444.mov) 直接转换可能会有噪点,一般需要使用调色盘 (Palette) 滤镜来确保透明色被正确映射
| |
参数详情为:
fps=15:设置帧率,不写则使用原视频帧率split[s0][s1]:将视频分为两路,这里s0用来生成调色板,s1用来输出图像[s0]palettegen[p]:对s0流生成专门的 256 色调色盘,并命名为p,默认情况下 palettegen 会自动保留透明颜色[s1][p]paletteuse:将生成的调色盘p应用到视频流s1上二是如果原视频是纯色背景,可以使用
colorkey滤镜扣除背景
| |
对于 colorkey=0x00FF00:0.1:0.1 具体为
0x00FF00:需要扣除的颜色,这里是纯绿,黑色为0x000000- 第一个
0.1:相似度 (Similarity),0.01-1.0 表示匹配度从精准匹配到完全匹配,一般设置在 0.1-0.3 - 第二个
0.1:混合度 (Blend),用于柔化边缘
合并音视频
首先确认音频编码是否兼容 (比如 AAC 编码)
| |
如果兼容,直接复制合并即可
| |
如果音频不兼容,则需要转换音频格式
| |
图片格式
ffmpeg 甚至还可以用于转换图片格式,比较简单的就是直接
| |
这对于临时换一下格式非常实用