新年になったのでGIF作成webアプリ「にこ☆GIF」をmp4に対応させた
正月休み中暇だったので、ニコニコ動画からGIFを作成するツール「にこ☆GIF」をmp4に対応させた。
どんなかんじか
例えばこんな動画をGIFに変換すると、
となる。
実装について
基本、ffmpegで動画ファイルをGIFに変換するだけなのだが、なにも考えずに行うと動画をいちいち全て取得する必要があって、異常に時間がかかっていた。
そこで、動画の途中からデータを部分的に取得するように実装したのだが、そのようにすると動画として再生できないバイナリの断片しか得られない。そこで、pythonを使って力技でファイルの断片から.264ファイルを擬似的に作成して、それをffmpegでmp4に変換することにした。mp4と.264、仕様書は存在するのだが、英語が全然読めなくて非常に辛かった。結局はmp4のバイナリを目で読んで仕様をバイト列から類推するみたいなかんじになった。一年分はバイナリエディタを使ったと思う。当分16進は見たくない。
参考にしたもの
https://www.cmlab.csie.ntu.edu.tw/~cathyp/eBooks/14496_MPEG4/iso14496-10.pdf
ごちうさMADで学びたいmp4のデータ構造
近頃、ごちうさMADの中身が気になって気になってしかたがない病にかかってしまいました。これでは夜も眠れないので、全く動画関連の知識がない中ではありましたが、ごちうさMADの中身を調べる次第となりました。
素材
今回はこちらを利用します。
(各位、どうにかしてこの動画のmp4データを入手してください)
MP4Boxの入手
mp4の内部構造を調べるため、MP4Boxというツールを利用します。 macなら、
brew update
brew install gpac
とhomebrewで入手することができます。
それでは実行してみます。
MP4Box -info -v sm24551585.mp4
一見、意味不明なデータが取得できました。
mp4の内部構造
mp4はBOXと呼ばれる構造が複数繋がったデータ形式となっています。 BOXはそれ自体が内部に別のBOXを持つこともできるのですが、 その中でも「ftyp」「moov」「mdat」というようなBOXがルートに配置されています。
さきほどのMP4Boxの出力でも、"Current top box"として表示されているのでわかりやすいかと思います。この中で、moovは動画のメタ情報、mdatは動画本体の情報が格納されています。
ごちうさMADでは以下のように、
- ftype
- moov
- mvhd
- ...
- mdat
- free
moovがmdatより前に存在することがわかります。これは恐らく、ニコニコ動画で再エンコードされた際、ストリーミングやシーク等に対応するためにmoovをこの位置に配置しているのだと考えられます(推測)。
バイナリで確認
さて、動画はバイナリデータですから、とりあえずバイナリエディタで開いてみましょう。
先頭の8バイトを以下に示します。
00 | 00 | 00 | 14 | 66 | 74 | 79 | 70 |
これは前半の4byteがBOXの長さ、後半の4byteがBOXの名前を表しています。この場合は'ftyp'です。長さが0x14なので、ftyp BOXはこのヘッダ含め20バイトの大きさであることがわかります。このBOXには以下'isom'というascii文字列が格納されていますが、これはこのmp4ファイルの規格を示しています。
Complete List of all known MP4/QT 'ftyp' designations
このようにして頭からバイナリを読んでいくと、動画の長さやトラックの数等を知ることができます。
ここで、ファイルの0x1D0あたりの位置にある'stsd'というBOXの内容を見ていただくと、'avc1'というascii文字列が確認できると思います。これで、このmp4に格納されている動画がH.264形式であることがわかります。この情報は、MP4Boxの出力に、
Visual PL: AVC/H264 Profile (0x15)
とあることからも確認できます。
H264
続いてはこちらの中身を見ていきたいところですが、このH.264については完全に闇だったため、全く情報を追えていません。だれか私にISO-14496-10を読み解く力をください。(続かない)
参考ページ
デジタル映像の「アーカイブ&デリバリー」に関する技術情報サイト|mpeg.co.jp > MPEGラボ > 第26回
http://perso.telecom-paristech.fr/~concolat/MPEGFileFormats.pdf
H.264 について(まとめ) 【H.264/Annex B/NAL file format/AVC/rtmp】 - モノトーンの伝説日記
ご注文はうさぎですか?? 第1巻 (初回限定版) [Blu-ray]
- 出版社/メーカー: NBCユニバーサル・エンターテイメントジャパン
- 発売日: 2015/12/25
- メディア: Blu-ray
- この商品を含むブログ (17件) を見る
上田岳弘『私の恋人』読んだ
クロマニョン人が転生して現代日本人として生まれ変わってオーストラリア人の女の子といちゃいちゃする話。
このように数十万年規模で物語が進行する小説は、青木淳悟の『四十日と四十夜のメルヘン』に収録されている「クレーターのほとりで」以来な気がする。 どちらも新潮社なので、新潮新人賞とクロマニョン人は親和性が高いのかもしれない。
内容としては若干思弁SFっぽいかんじがして、例えば飛浩隆作品のSF的理詰めの部分を取り除いて観念的な会話だけに終始させたら似たようなかんじになるかもしれない。この小説、前半は読んでいて辛い感があるが、後半オーストラリアから始まる世界一周の旅パートに入ると面白くなってくるので、作者を旅に出せば出すほど小説が純化して良くなっていくかもしれない。将来に期待。
- 作者: 飛 浩隆
- 出版社/メーカー: 早川書房
- 発売日: 2013/11/15
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 青木淳悟
- 出版社/メーカー: 新潮社
- 発売日: 2005/02/26
- メディア: 単行本
- 購入: 1人 クリック: 44回
- この商品を含むブログ (87件) を見る
- 作者: 上田岳弘
- 出版社/メーカー: 新潮社
- 発売日: 2015/06/30
- メディア: 単行本
- この商品を含むブログ (2件) を見る
宮崎夏次系『ホーリータウン』読んだ
宮崎夏次系『ホーリータウン』読んだ。例によってヘリコプターを乗り回すおじいちゃんとかちくわが頭部に生えた女の子とかが出てきてテンションが高めですが、中でも以下のコマ、
妻が家出してしまった我が家でもくもくと自分の作った食事を食べる夫が、あまりの妻への許せなさに焼き魚を箸でぶしゅっとするシーンが非常に高まります。
近作になるに従ってどんどんコマとコマの間の感情の連続性が欠落していってギャグ寄りになっている気がするのですが、果たしてこのまま突っ走っていってどれだけの読者がついてこれるのか非常に心配です。
(『夕方までに帰るよ』は未読なのでそちらでは一般向けになっているのでしょうか...)
- 作者: 宮崎夏次系
- 出版社/メーカー: 講談社
- 発売日: 2015/09/23
- メディア: コミック
- この商品を含むブログ (1件) を見る
- 作者: 宮崎夏次系
- 出版社/メーカー: 講談社
- 発売日: 2015/09/23
- メディア: コミック
- この商品を含むブログを見る
太宰治小説のTF-IDFを計算した
を参考に、太宰治小説のTF-IDFを計算した。以下、値が上位のものから単語だけ30個並べると、
いちど,謂わ,依っ,要ら,つらい,やたら,ご存じ,在っ,先日,おそろしく,だいいち, あがっ,ゆるし,下さっ,おそろしい,落ちつき,青森,あいだ,くるしい,おそく,ちかく, おまえ,ごはん,大笑い,具合い,判ら,ちまい,のこのこ,としの,三鷹,やけくそ,たいてい, れい,だめ,無かっ,ちゃんと,逢う,津軽,あらわれ,繰りかえし,わびし,あれこれ,わかい, うつむい,みじん,いやらしい,わがまま,ふるさと,於い,在る,口調,なんにも,捨て, 無学,ッ,なさっ,だいたい,概念,判る,長兄,生家,安易,素知らぬ,金木,したため,熱狂, あいそ,のろのろ,ごちそう,わるい,芸術,ばん,之,落ちつい,まじめ,ことし,敗北,自重, たのしみ,めいわく,長編,ロマンス,かたち,悪癖,言える,記さ,あからめ,知合い,滅茶, とたんに,あやしい,心掛け,判っ,くさく,高潔,まごつい,侘び,あたらしく,甲府,ひくく, むだ,瞬時,ふっと,酔っ,大 声,きらい,内心,おのれ,ゆえ,ふたり,おめでとう
のようになる。ネガティブな単語が多く含まれていて、非常に満足度が高い。
https://github.com/soy-curd/Dazai/blob/master/doc/flayer.png
ついでに文学フリマ用のビラもできたので、ひと安心。