破棄されたブログ

このブログは破棄されました。

GIF アニメを MP4 (h.264) に変換する

MP4 (h.264) とかいちいち書くのダルいので、 MP4 はコンテナだから云々おじさんは無視して、MP4 と略記する。

必要なもの

手順

以下のスクリプトを保存して、実行する

#!/bin/bash
set -e

avconv=$(which avconv || which ffmpeg)
convert=$(which convert)
([ -n "${avconv}" ] && [ -n "${convert}" ]) || exit 1

onexit() {
    [ -n "${tmpdir} " ] && [ -d "${tmpdir}" ] && rm -rf "${tmpdir}"
}

usage() {
    echo "Usage: $0 [GIF_FILE] [VIDEO_FILE]" 1>&2
    exit 1
}

[ "$#" == 2 ] || usage

trap onexit 0 1 2 3 15

tmpdir=$(mktemp -d)

convert -coalesce $1 "${tmpdir}/%08d.png"
${avconv} -r 10 -i "${tmpdir}/%08d.png" $2
# 実行例
/path/to/script /path/to/animation.gif /path/to/video.mp4

説明

convertGIF アニメを PNG ファイルに変換して、 avconv で MP4 に変換している。 avconv 単体ではダメっぽかった。 avconv へは、出力フォーマットを指定していないので、別に出力フォーマットが MP4 に限定されるわけではない。

メリット

  • GIF アニメより、 MP4 の方がファイルサイズが小さくなることがある。
    • 手元の GIF アニメを変換したら 1/20 くらいのサイズになった。
  • 世の中のウェブサービスを見ると、画像よりも動画のほうが上限が緩かったりするので、アップロードしやすい。

デメリット

  • オリジナルの完全な情報は失われる。

参考資料

広告を非表示にする