本文将教你,如何一步步制作出长毛象所需的apng动图。
所需工具:
以上工具,除最后用于压图的 tinypng 之外,均为开源自由软件。
大致步骤:
将视频或gif动画转成一组单帧图片
对这组图片进行相应处理(可选)
将处理后图片合成为apng
使用 tinypng 压缩 apng 文件大小(可选)
MP4格式
文件来源:原嘟文找不到了(如果有谁知道,请说明一下),本实例缓存的文件地址。
将mp4文件转换为一组单帧图片
查看mp4文件信息
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 10.1.0 (GCC) configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3 libavutil 56. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libavformat 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '9a161de3d2d8309e.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.20.100 Duration: 00:00:00.53, start: 0.000000, bitrate: 682 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 200x200, 669 kb/s, 28.58 fps, 28.58 tbr, 10976 tbn, 57.17 tbc (default) Metadata: handler_name : VideoHandler
该mp4文件帧率 28.58 fps。
参数含义:
-i 9a161de3d2d8309e.mp4
:输入文件-q:v 2
: 最好质量-r 28
: 每秒取28帧
合成apng
参数含义:
-o mastodon_output.png
: 输出文件-d 35
: 帧与帧之间间隔35毫秒(1000/28)
APNG效果:
压缩成品大小
长毛象表情最大50KB,所以还需要压缩图片大小。
原始大小:493.85 KB 使用tinypng压缩后:181.4 KB
压缩后的图像:
但文件大小还是大于50 KB,所以需要重新处理。
视频每帧原本为200×200px,现将其压缩为80×80px,然后再行制作apng。
ls 90*.png | xargs -n1 -I{} convert -resize '80x80' {} c{} apngasm -o mastodon_output_c.png c90*.png -d 35
再次得到的apng,文件大小:112 KB。
使用tinypng压缩后:43 KB,符合相应要求,表情制作成功。
gif格式
gif动图的处理过程,基本同上。
将gif文件转换为一组单帧图片
查看gif信息
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 10.1.0 (GCC) configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3 libavutil 56. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libavformat 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100 Input #0, gif, from 'p232962970.gif': Duration: 00:00:01.47, start: 0.000000, bitrate: 2024 kb/s Stream #0:0: Video: gif, bgra, 200x200, 14.25 fps, 14.29 tbr, 100 tbn, 100 tbc
合成apng
最终成品(大小328.5KB):
压缩大小后的成品(大小45KB):
如果你觉得上述步骤有一点麻烦,可以直接使用 gif2apng 直接将 gif 转为 apng。
成品如下(大小309.7KB):