2013年1月31日木曜日

mp4から映像データをoffにする。

youtubeのデータがmp4であることが(たぶん)確定したので、映像データを取り去りたいとおもいます。

まず、大前提として、mp4データなんですが次のような書式になっています。
1:データはボックスという形のまとまりになっている。
2:ボックスは子ボックスを内部に持つことができるが、それはボックスのタイプ次第
3:ボックスの形式は次のとおり。
[4バイト(ボックスのデータ量)][4バイト(ヘッダ文字列)][内容]
となっています。

で、大まかな構成ですが・・・
[ftyp]
[moov]
[mdat]
これらが一番ベースとなるボックス。
でmoovはコーデック情報として、trakという子ボックスを持っています。

さて、ここから映像データを取り去るかというと、映像用のtrakデータをoffにしてやればいいみたいです。とりあえず動作しました。
で、offのやり方。
[ftyp]
[moov]
  [trak(映像用)]
  [trak(音声用)]
[mdat]
という形になっていたので、映像用のtrakをfreeに書き換えます。するとあら不思議、映像用のtrakの内容がそっくりそのままskip用の除外データになっちゃいます。


[ftyp]
[moov]
  [free(映像用だがキャンセル)]
  [trak(音声用)]
[mdat]

で、再生してみたところ、音楽のみのデータになりました。
もちろんiOS6.1(iPhone4S)で、バックグラウンド音楽再生もできました。
シーク等もばっちり。

あとはyoutubeのデータをプロキシするサーバーをぱぱっと書けば、なんとかなりそうです。

0 件のコメント:

コメントを投稿