使用具有高质量和字幕的 ffmpeg 将 .avi 转换为 .gif

Convert .avi to .gif with ffmpeg with good quality AND subtitles

我想使用 ffmpeg 将 .avi 转换为具有高质量 字幕的 .gif。

现在,我使用此脚本将 .avi 转换为 .gif,质量质量好:

ffmpeg -v warning -ss 10:00 -t 5 -i input.avi -vf "fps=15,scale=420:-1:flags=lanczos,palettegen" -y palette.png
ffmpeg -v warning -ss 10:00 -t 5 -i input.avi -i palette.png -lavfi "fps=15,scale=420:-1:flags=lanczos [x]; [x][1:v] paletteuse" -y output.gif

我生成一个调色板,然后用它来输出 gif。

然后我使用这个脚本将字幕添加到gif:

ffmpeg -v warning -i output.gif -vf "ass=subtitles.ass" -y outputWithSubs.gif

一切正常。问题是第一个脚本给了我没有字幕的高质量,第二个给了我没有高质量的字幕

当我尝试将它们与此脚本结合使用时:

ffmpeg -v warning -ss 10:00 -t 5 -i input.avi -vf "fps=15,scale=420:-1:flags=lanczos,palettegen" -y palette.png
ffmpeg -v warning -ss 10:00 -t 5 -i input.avi -i palette.png -vf "ass=subtitles.ass" -lavfi "fps=15,scale=420:-1:flags=lanczos [x]; [x][1:v] paletteuse" -y output.gif

我收到这个错误:

Filtergraph 'ass=subtitles.ass' was specified through the -vf/-af/-filter option for output stream 0:0, which is fed from a complex filtergraph. -vf/-af/-filter and -filter_complex cannot be used together for the same stream.

有什么办法可以同时兼顾画质和字幕吗?

使用-filter_complex, not -vf, and do all of your filtering in one filtergraph.

ffmpeg -y -ss 10:00 -t 5 -i input.avi -filter_complex "fps=15,scale=420:-1:flags=lanczos,ass=subtitles.ass,palettegen" palette.png

ffmpeg -y -ss 10:00 -t 5 -i input.avi -i palette.png -filter_complex "fps=15,scale=420:-1:flags=lanczos,ass=subtitles.ass[x];[x][1:v]paletteuse" output.gif