标题: [电脑] ffmpeg 转换 一堆 jpg to GIF 高级 清晰的方法[附带样品] [打印本页]
作者: beterhans 时间: 2019-12-4 13:45 标题: ffmpeg 转换 一堆 jpg to GIF 高级 清晰的方法[附带样品]
最近用 PixvUlti2 下载了一些画师的作品,有单张的还有 一张一张连续的可以做成动画的 jpg 下载下来是 zip格式
解开 是 jpg 其实是一个动画但是 一帧一帧翻页实在不爽, 做成 video 又不能loop
只有 gif 是最好的方案
但是直接做 gif 太费力 一个动画 动不动就是 上百frame的 而且还要做色表分析
于是研究了下 做了下面的 ffmpeg 的命令
样品成果
https://bbs.tgfcer.com/viewthread.php?tid=8177707
[ 本帖最后由 beterhans 于 2019-12-6 15:54 编辑 ]
作者: beterhans 时间: 2019-12-4 13:48
Picture sequence to GIF
首先先 扫一次 图片做出色表 palette复制内容到剪贴板
代码:
ffmpeg -framerate 30 -y -start_number 000000 \
-i %06d.jpg -vf \
fps=30,scale=320:-1:flags=lanczos,palettegen \
palette.png
然后带入色表做 gif复制内容到剪贴板
代码:
ffmpeg -framerate 30 -y -start_number 000000 \
-i %06d.jpg -i palette.png \
-f gif -filter_complex "paletteuse" \
out.gif
%06d.jpg 意思是指 带有 6个数字的文件 比如 000000.jpg 000001.jpg ..... 6 digis
如果是 三位 那就是 %03d
作者: beterhans 时间: 2019-12-4 13:49
基于上面的 ffmpeg 命令只能 操作一个动画 如果你又上百个动画目录需要转换 可以用我写的这个 bash 脚本
#! /bin/bash
# Batch Convert Script by Beterhans based on FFMPEG
# Your files should like following
# -gif(a folder contain your projects)
# ----Project 01 (folder)
# --------000000.jpg
# --------000001.jpg
# ----Project 02
# --------000000.jpg
# --------000001.jpg
# -ffbc_image2gif.sh
# Target dir
INDIR="$1"
FPS="$2"
PWD="$(pwd)"
# check the INDIR folder
if [ -z "$INDIR" ]
then
echo input folder not found
echo use command like bash ffbc xxxx
echo xxx is the folder have image files with no space or special lettles.
exit
fi
# Check FFMPEG Installation
if ffmpeg -formats > /dev/null 2>&1
then
ffversion=`ffmpeg version 2> /dev/null | grep ffmpeg | sed -n 's/ffmpeg\s//p'`
echo Your ffmpeg verson is $ffversion
else
echo ERROR:You need ffmpeg installed
exit
fi
echo Your FFMpeg is OK
if [ -w $INDIR ]
then
echo "Greate $INDIR is accessable"
else
echo "Can not access $INDIR folder"
fi
NUMBERTEST='^[0-9]+
if ! [[ $FPS =~ $NUMBERTEST ]]
then
echo
echo "ERROR!"
echo "you need to set a FPS as a number like"
echo 'bash ffbc_image2gif.sh gif 30'
exit 1
else
echo You set FPS to $FPS
fi
echo "PWD=$PWD"
sleep 1
echo Entering File Checking...
echo
cd $INDIR
##################### Processing files ################
# Remove space file file name
declare -i i=1
for PROJECT in *
do
echo "Project $i"
echo Current project is
echo $PROJECT
#Change Strange Japanese Characters into english
OUTPUTNAME="$(echo $PROJECT | sed 's/(/(/g' | sed 's/)/)/g' | sed 's/ /_/g')"
echo New output file name will be
echo $OUTPUTNAME
echo
echo 'Genrate pallete file'
echo 'Use command ffmpeg -y -start_number 000000 -i "$PROJECT/%06d.jpg" -vf fps="$FPS",scale=320:-1:flags=lanczos,palettegen "$PROJECT/palette.png"'
ffmpeg -y -start_number 000000 -i "$PROJECT/%06d.jpg" -vf fps=$FPS,scale=320:-1:flags=lanczos,palettegen "$PROJECT/palette.png"
echo 'Incodeing GIF image'
echo 'use command'
echo 'ffmpeg -framerate "$FPS" -y -start_number 000000 -i "$PROJECT/%06d.jpg" -i "$PROJECT/palette.png" -f gif -filter_complex "paletteuse" "../$OUTPUTNAME.gif"'
ffmpeg -framerate $FPS -y -start_number 000000 -i "$PROJECT/%06d.jpg" -i "$PROJECT/palette.png" -f gif -filter_complex "paletteuse" "../$OUTPUTNAME.gif"
i=i+1
done
echo ALL Files Processed!
exit 0
[ 本帖最后由 beterhans 于 2019-12-4 13:51 编辑 ]
作者: babyone 时间: 2019-12-4 13:50
posted by wap, platform: iPad
技术贴马克
作者: jack_durden 时间: 2019-12-4 14:26
posted by wap, platform: Android
mark
作者: nosmoking 时间: 2019-12-4 14:33
posted by wap, platform: Android
GIF这么落后的格式为什么不淘汰?
作者: Alloyo 时间: 2019-12-4 14:35
posted by wap, platform: iPhone
还是研究下apng吧
Gif只支持256,再怎么搞都是根本硬伤
作者: beterhans 时间: 2019-12-4 14:42
posted by wap, platform: iPhone引用:
原帖由 @Alloyo 于 2019-12-4 14:35 发表
还是研究下apng吧
Gif只支持256,再怎么搞都是根本硬伤
apng 第一次听说
看图软件都支持?
随便下了一个 样片
除了浏览器能出动画 其他看图软件都出不了动画啊
[ 本帖最后由 beterhans 于 2019-12-4 14:46 编辑 ]
作者: smterc 时间: 2019-12-4 19:59
Posted by ONEPLUS A3000
apng和webp,PC的看图软件里honeyview支持得比较好
作者: sfczhw 时间: 2019-12-5 21:57
mark
作者: arex 时间: 2019-12-5 21:59
用webp啊
欢迎光临 TGFC Lifestyle (http://tgfcer.com/) |
Powered by Discuz! 6.0.0 |