soy-curd's blog

へぼプログラマーです [https://twitter.com/soycurd1]

新年になったのでGIF作成webアプリ「にこ☆GIF」をmp4に対応させた

正月休み中暇だったので、ニコニコ動画からGIFを作成するツール「にこ☆GIF」をmp4に対応させた。

にこGIF

どんなかんじか

例えばこんな動画をGIFに変換すると、 f:id:soy-curd:20160102150035g:plain

となる。

実装について

基本、ffmpegで動画ファイルをGIFに変換するだけなのだが、なにも考えずに行うと動画をいちいち全て取得する必要があって、異常に時間がかかっていた。

そこで、動画の途中からデータを部分的に取得するように実装したのだが、そのようにすると動画として再生できないバイナリの断片しか得られない。そこで、pythonを使って力技でファイルの断片から.264ファイルを擬似的に作成して、それをffmpegでmp4に変換することにした。mp4と.264、仕様書は存在するのだが、英語が全然読めなくて非常に辛かった。結局はmp4のバイナリを目で読んで仕様をバイト列から類推するみたいなかんじになった。一年分はバイナリエディタを使ったと思う。当分16進は見たくない。

参考にしたもの

mntone.hateblo.jp

stackoverflow.com

developer.apple.com

https://www.cmlab.csie.ntu.edu.tw/~cathyp/eBooks/14496_MPEG4/iso14496-10.pdf