【发布时间】:2017-10-04 05:26:50
【问题描述】:
所以我有一个用于将视频剪辑制作成 GIF 的脚本,但我的脚本有问题,它以前可以工作,现在不能工作。
在我的脚本中,我有预定义的变量和标志,但它在 AVFilterGraph 上通过说 No such filter: 'dither' 出错,但我检查了 FFMPEG 的文档并且有一个 dither 过滤标志,但由于某种原因,它在它时不起作用以前工作过。
#!/bin/sh
start_time=00:00 # start time of GIF
duration=5 # duration of GIF
palette="/tmp/palette.png" # temporary palette
filters="fps=20,scale=440:-1:flags=lanczos,dither=bayer:bayer_scale=1" # FPS and Scale of GIF
ffmpeg -v warning -ss $start_time -t $duration -i $1 -vf "$filters,palettegen" -y $palette
ffmpeg -v warning -ss $start_time -t $duration -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2
为此
filters="fps=20,scale=440:-1:flags=lanczos,dither=bayer:bayer_scale=1"
抖动应该算作一个标志,即; flags=lanczos 并使用带有bayer_scale 的抖动方法。
我不明白为什么这在以前有效时不再有效。我的 ffmpeg 包没有任何改变,我的系统上安装了 ffmpeg version 3.3.3-2~ubuntu16.04.1~ppa1 包,之前它运行良好。我从这里的教程开始http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
所以基本上使用我的脚本就是这样;
$ ./makegif.sh input_file.mp4 output_file.gif
然后它应该将转换后的视频生成为 GIF 格式,如果我想要剪辑中的特定部分,我只需更改脚本中的开始时间和持续时间。理想情况下,我想在 CLI 上手动输入开始时间和持续时间,但我只是将其简化为仅输入输出文件而无需额外的参数标志。
提供的这些标志和选项应该可以工作,但它很愚蠢,没有做它应该做的事情。
【问题讨论】:
标签: video ffmpeg converter video-processing