soy-curd's blog

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

ミシェル・ウェルベック『闘争領域の拡大』読んだ

ミシェル・ウェルベック『闘争領域の拡大』読んだ。ウェルベック作品というとやたらセックスばかりしてる印象が強いのだが、この作品はデビュー作ということもあってか、大人しくマスターベーション多めの構成となっている。特に、ダンスパーティで出会ったカップルを妬む心から、ナイフで刺し殺そうとストーカー行為を行い、あげくの果てに青姦に及んでいたカップルを見ながらの自慰に至るくだりは、生と死と虚無を一度に味わえる最高の描写となっている。お得感ある。

闘争領域の拡大

闘争領域の拡大

フムアルヌクファムップアッファ『ワイルドファンシーダイナマイト!』読んだ


f:id:soy-curd:20160124213750j:image

 
フムアルヌクファムップアッファ『ワイルドファンシーダイナマイト!』読んだ。一応二回程、入力した作者名を確認したけれど、もしかしたらそれでも間違っているかもしれない(間違っていたとしてもどう考えてもこのペンネームにした作者が悪い気がする)。内容としてはいわゆる下ネタギャグ漫画であり、おっぱい漫画であり、乳首漫画である(生理的シモネタも含む)。しょうもないとしか言いようがないが、いつの時代も、このような作品を人は求めてしまうのだろう。
 
(以下ネタバレ含む)
 

atom-typescriptパッケージでTypeScriptをビルドする際、ビルド時間がメチャメチャ長かった場合の対処について

最近、TypeScriptを触り始めているのだけれど、Atomatom-typescriptパッケージを用いてTypeScriptからJavaScriptへの変換を行うことにした。しかし、ビルド時間ばかりかかってAtomの補完が半端無く遅くなってしまったので、なにかおかしいと思いatom-typescriptのdocsを見たら解決法が載っていた。

https://github.com/TypeStrong/atom-typescript/blob/master/docs/tsconfig.md

原因は、npmでインストールしたモジュールまでTypeScriptのコンパイルが走っていたことだった。 これを防ぐにはtsconfig.jsonに以下のような設定をすれば良い。

{
     "exclude": [
       "node_modules"
     ]
}

ビルド対象からnpmのパッケージディレクトリを除くだけ。これでさくさく補完が効くようになった。おわり。

粟岳高弘『いないときに来る列車』読んだ

粟岳高弘『いないときに来る列車』読んだ。ふんどしとスク水を女の子に履かせるためだけに漫画が書かれているような作風だが、本作品集では、人魚、メイド、バニーガール、腰ミノ等の各種コスチュームが取り揃えられており、飽きの来ない構成になっている。収録されている作品の中で最も面白いものは、単行本のタイトルにもなっている「いないときに来る列車」なのだが、なぜかこれに登場する女の子はふんどし等の一般人を寄せ付けない衣装を身に着けていないため、冒頭だけ読んで間違えて購入してしまいふんどし沼にはまってしまう可哀想な読者もいると思われる。恐ろしい。

いないときに来る列車

いないときに来る列車

新年になったので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

ごちうさMADで学びたいmp4のデータ構造

近頃、ごちうさMADの中身が気になって気になってしかたがない病にかかってしまいました。これでは夜も眠れないので、全く動画関連の知識がない中ではありましたが、ごちうさMADの中身を調べる次第となりました。

素材

今回はこちらを利用します。

(各位、どうにかしてこの動画のmp4データを入手してください)

MP4Boxの入手

mp4の内部構造を調べるため、MP4Boxというツールを利用します。 macなら、

brew update
brew install gpac

とhomebrewで入手することができます。

それでは実行してみます。

MP4Box -info -v sm24551585.mp4   

f:id:soy-curd:20151216222728p:plain

一見、意味不明なデータが取得できました。

mp4の内部構造

mp4はBOXと呼ばれる構造が複数繋がったデータ形式となっています。 BOXはそれ自体が内部に別のBOXを持つこともできるのですが、 その中でも「ftyp」「moov」「mdat」というようなBOXがルートに配置されています。

さきほどのMP4Boxの出力でも、"Current top box"として表示されているのでわかりやすいかと思います。この中で、moovは動画のメタ情報、mdatは動画本体の情報が格納されています。

ごちうさMADでは以下のように、

  • ftype
  • moov
    • mvhd
    • ...
  • mdat
  • free

moovがmdatより前に存在することがわかります。これは恐らく、ニコニコ動画で再エンコードされた際、ストリーミングやシーク等に対応するためにmoovをこの位置に配置しているのだと考えられます(推測)。

バイナリで確認

さて、動画はバイナリデータですから、とりあえずバイナリエディタで開いてみましょう。

f:id:soy-curd:20151216225203p:plain

先頭の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

unoh.github.com by unoh

http://cimarronsystems.com/wp-content/uploads/2014/04/Elements-of-the-H.264-VideoAAC-Audio-MP4-Movie-v2_0.pdf

https://msdn.microsoft.com/en-us/library/windows/desktop/dd757808(v=vs.85).aspx?tduid=(82e78e30a0c47dc925de44e2ff61b99b)(256380)(2459594)(TnL5HPStwNw-WveVIlRjIxZxvxcYVBlNFw)()

H.264 について(まとめ) 【H.264/Annex B/NAL file format/AVC/rtmp】 - モノトーンの伝説日記

ご注文はうさぎですか?? 第1巻 (初回限定版) [Blu-ray]

ご注文はうさぎですか?? 第1巻 (初回限定版) [Blu-ray]

上田岳弘『私の恋人』読んだ

クロマニョン人が転生して現代日本人として生まれ変わってオーストラリア人の女の子といちゃいちゃする話。

このように数十万年規模で物語が進行する小説は、青木淳悟の『四十日と四十夜のメルヘン』に収録されている「クレーターのほとりで」以来な気がする。 どちらも新潮社なので、新潮新人賞クロマニョン人は親和性が高いのかもしれない。

内容としては若干思弁SFっぽいかんじがして、例えば飛浩隆作品のSF的理詰めの部分を取り除いて観念的な会話だけに終始させたら似たようなかんじになるかもしれない。この小説、前半は読んでいて辛い感があるが、後半オーストラリアから始まる世界一周の旅パートに入ると面白くなってくるので、作者を旅に出せば出すほど小説が純化して良くなっていくかもしれない。将来に期待。

ラギッド・ガール 廃園の天使?

ラギッド・ガール 廃園の天使?

四十日と四十夜のメルヘン

四十日と四十夜のメルヘン

私の恋人

私の恋人