ars*_*ena 18 video gif ffmpeg conversion
我正在开发将mp4
文件转换为gifs
using 的android 应用程序ffmpeg
。问题是生成的 gif 尺寸很大。另一个问题是,我不能使用其他任何东西ffmpeg
(例如imagemagick
for convert
,甚至palletes
现在)来减少生成的 gif 大小。
这是我正在使用的命令:
ffmpeg -y -i file.mp4 -pix_fmt rgb24 -r 10 -s 320x480 file.gif
那么有没有其他方法可以优化转换?
小智 25
下面的命令帮助我优化了我的 gif。这些参数可以根据您的具体要求进行更改。
ffmpeg -y -i input.mp4 -filter_complex "fps=5,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=bayer" output.gif
Run Code Online (Sandbox Code Playgroud)
笔记:
这里的scale和max_colors极大地影响了输出gif的文件大小。
如果您为 scale 和 max_colors 设置较低的值,则将抖动设置 为bayer会使输出 gif 看起来更好一些。抖动的默认值为sierra2_4a
Gya*_*yan 14
将 ffmpeg 用于 GIF 的标准方法是
从视频生成调色板
ffmpeg -y -i file.mp4 -vf palettegen palette.png
Run Code Online (Sandbox Code Playgroud)
然后,
ffmpeg -y -i file.mp4 -i palette.png -filter_complex paletteuse -r 10 -s 320x480 file.gif
Run Code Online (Sandbox Code Playgroud)
ube*_*kel 10
我尝试了所有这些技术,最终使用了https://ezgif.com
我不知道他们在幕后使用了什么魔法,但他们的压缩级别旋钮、调色板优化和分辨率降低带来了最高的视觉质量和最小的文件大小。
我尝试过-vf palettegen
,-filter_complex paletteuse
但这消除了在同一运行中的能力-vf "scale=iw*.2:ih*.2"
,所以我必须单独执行此操作。而且 ffmpeg 创建的文件更大0.3
,0.5
这很奇怪。经过一个小时的摆弄,我尝试了 ezgif,效果很好。
vid=
start_time=00:00:01
duration=5
height=ih/2 # input height halved , can replace with pixils .
width=-2 # keeps aspect ratio . can replace with pixils .
fps=25 # frames per a second .
filters="fps=$fps,scale=$width:$height:flags=lanczos"
ffmpeg -ss $start_time \
-t $duration \
-i "$vid" \
-vf "$filters,palettegen" \
-y palette.png &&
ffmpeg -ss $start_time \
-t $duration \
-i "$vid" \
-i palette.png \
-lavfi "$filters [x]; [x][1:v] paletteuse" \
-y "$vid".gif &&
rm palette.png
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39225 次 |
最近记录: |