⬑
一些FFMpeg小窍门
2022-01-08烧录字幕
如果要给视频加载字幕的话,其实还是单独加载文字格式的字幕轨或者字幕文件最方便。但是,如果视频要传到一些网站上,或者要用移动设备观看,可能就需要把字幕烧到视频里面了。FFMpeg提供了一个命令:
ffmpeg -i input.mp4 -vf "ass=subtitle.ass" output.mp4
有的字幕是*.srt
格式的,这时候要先转码成*.ass
格式:
ffmpeg -i input.srt output.ass
要是字幕是MKV文件中的字幕轨,那就需要先提取出来:
ffmpeg -i Movie.mkv -map 0:s:0 subs.srt
这里0:s:0
代表第一条字幕轨。因为有时候一个视频文件里面有多条不同语言的字幕轨,比如说很多从Netflix上扒下来的视频。如果要选择其他的视频轨,比如第二条,就把-map
参数改成0:s:1
。
合并音频文件
要合并音频文件的话,先要把文件列出来,放到一个文本文件里面,像这样:
file track-01.mp3
file track-02.mp3
file track-03.mp3
...
file track-XX.mp3
假设把上面的文件存成了list.txt
,那么就运行这个命令:
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp3
把视频转成GIF
用FFMpeg其实可以直接把视频转成GIF:
ffmpeg -i input.mp4 output.gif
但是,如果直接转换的话,GIF图像上会出现横纵条纹。其实,数字信号处理领域有个专门术语描述这个技术:抖动(dither)。
因为GIF只有128种颜色可供选择,所以把视频转换过来的时候难免会有损失,这个时候用抖动可减小量化误差。
然而,虽然理论上说,量化误差减小了,但是实际上人眼看起来却是不舒服的,所以最好还是把抖动关掉。不过这样的话步骤要复杂一点,首先要生成GIF调色板:
ffmpeg -i input.mp4 -vf palettegen palette.png
然后结合调色板文件,在禁用抖动的情况下启动转码:
ffmpeg -i input.mp4 -i palette.png -filter_complex "paletteuse=dither=none" output.gif
这样即可得到满意的GIF图片。
Email: i (at) mistivia (dot) com