我今天实际上是想自己弄清楚这一点,并发现了这个不错的小要点:
用于保存视频,用于转换视频,用于压缩/清理最终的 gif。
它使用命令行漂亮的花纹及光碟笔刷,因此它可能不适合您的用例,但我怀疑这可以很容易地放入工作流程中。
安装:
brew install ffmpeg
brew cask install xquartz #dependency for gifsicle, only required for mountain-lion and above
brew install gifsicle
转变:
ffmpeg -i in.mov -s 600x400 -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > out.gif
输出分辨率可以(并且可能应该)随文件名而变化。
对于那些想要生成 shell 脚本来执行上述操作的人用mac录视频软件,我想出了这个:
#!/bin/bash -e
# Converts a video to a gif
if [ "$#" -ne 2 ]; then
echo "usage: ${0##*/} [input video] [output gif]"
exit 1
fi
VIDEO=$1
GIF=$2
# finds width and height of $VIDEO expressed as 123x456
WIDTH_HEIGHT=$(ffprobe -loglevel warning -show_streams $VIDEO | grep -e "width\|height" | sed -E 's/(width|height)=//g' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/x/g')
# converts the video
ffmpeg -i $VIDEO -s $WIDTH_HEIGHT -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > $GIF
如果要为此创建自动化工作流,则需要使用“运行 Shell 脚本”工作流项,并将参数作为输入。我不得不对其进行一些修改,因为生成的 .app 不知道用mac录视频软件,也不知道在哪里Na个图床,所以这个解决方案绝对不是很便携,可能需要调整锦鱼笔刷,但它至少很快:
#!/bin/bash -e
# Converts a video to a gif
if [ "$#" -ne 1 ]; then
echo "usage: ${0##*/} [input video]"
exit 1
fi
TOOL_PATH=/usr/local/bin
VIDEO=$1
GIF=$VIDEO.gif
# finds width and height of $VIDEO expressed as 123x456
WIDTH_HEIGHT=$($TOOL_PATH/ffprobe -loglevel warning -show_streams $VIDEO | grep -e "width\|height" | sed -E 's/(width|height)=//g' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/x/g')
# converts the video
$TOOL_PATH/ffmpeg -i $VIDEO -s $WIDTH_HEIGHT -r 10 -f gif - | $TOOL_PATH/gifsicle --optimize=3 --delay=3 > $GIF
然后,您可以将工作流程保存为文件友好的应用程序或服务,以便使用它就像将电影拖放到其中或右键单击视频文件一样简单:
我不知道为什么它显然加速了..
发表评论