» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[电脑] 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 编辑 ]


TOP

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



TOP

基于上面的 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 编辑 ]


TOP

posted by wap, platform: iPad
技术贴马克

TOP

posted by wap, platform: Android
mark

TOP

posted by wap, platform: Android
GIF这么落后的格式为什么不淘汰?

TOP

posted by wap, platform: iPhone
还是研究下apng吧
Gif只支持256,再怎么搞都是根本硬伤

TOP

posted by wap, platform: iPhone
引用:
原帖由 @Alloyo  于 2019-12-4 14:35 发表
还是研究下apng吧
Gif只支持256,再怎么搞都是根本硬伤
apng 第一次听说
看图软件都支持?
随便下了一个 样片

除了浏览器能出动画 其他看图软件都出不了动画啊

[ 本帖最后由 beterhans 于 2019-12-4 14:46 编辑 ]

TOP

Posted by ONEPLUS A3000
apng和webp,PC的看图软件里honeyview支持得比较好

TOP

mark

TOP

用webp啊

TOP

发新话题
     
官方公众号及微博