ffmpegを使うという事
去年のクリスマスに、サーバにffmpegとffmpeg-phpを試験導入しました。
リソースが少ない事と、必要なライブラリとコーディックが多いので途中からエラーに負けそうになりながら導入を完了しました。
まず、Linuxのディストリやffmpegのバージョンで若干導入方法が違ったりで結局自力解決になりました。
一番困ったのは、コーディックが配布終了してたり、著作権の関係で公開停止になっていたりで、ライブラリをかき集めるのに時間がかかりました。
aptだと一発でインストールできるんですが、aptがないディストリは根性が必要です。
で、余計なものを入れないようにとffserverrとMplayerはdisableに。
ffserverがあればストリーム配信が簡単に行えるのですが、ビデオキャプチャカードもなのでしばらくはなしで。
そうこうしながら、導入が完了し(一部コンフィグオプションが使えませんでしたが)変換のテストを行うと、順調に行えました。
3gp形式にも変換出来るので、着うたや着うたフルにも出来ますが、変換しただけでは着信音設定が出来ません。
携帯動画変換君もffmpegを使っていますが、着信音に設定できるのは、ffmpegで変換した後にQuickTimeのツールを使用して整形を行ったり、独自ツールでAtomの変換を行っているからです。
なので、ストリーム配信も可能なことと、ファイル偽装にて様々な機種で再生が可能です。
そもそも、着信音設定を可能にするには作成した3gpファイルをバイナリエディタで開いて、dcmdの後を変換するだけです。
変換方法は、ファイルサイズの末端の値が奇数か偶数だけの違いのみなので簡単です。どういう値に変更するかは検索すれば出てきます。
そもそも、ドコモが公式に仕様を公開していないのと、著作権に違反してしまうので色んなさいとでも詳しく解説はしていないです。
ちなみに、別の箇所を変更するとi-motionではなくミュージックフォルダに保存出来るようになるそうです。
で、ffmpegで変換すると、このdcmdの項目がないのです。
なので、着もとなどのツールで変換を行うとエラーが起こります。
くわえて、ストリーム配信が出来ません。
これは、ファイルの構造によるもので、mdata、moovなどのツリー構造でffmpegで変換を行うと、mdata、つまりデータ本体が先になってしまい、タグデータが後になるためです。
また、ファイルの先頭付近にある、ファミリ名もないし。
なので、整形するにはツリー構造のデータ本体とメタデータをごっそり入れ替えて、先頭にファミリ名を追加すればOK
様々なツールが行っているのはこういう処理と思われます。
変換君も。
QuickTimeのフロントエンドツールでやってる感じですが。
でも、Atomと名前の付くプログラムもあったので、これは構造を書き換えている感じです。
という事で、着信音設定は出来ませんが、ケータイで音楽を聴いたり、ビデオ見たりは出来ます。
多分、PSP用にも変換できます。
H.264が入れられなかったのが悔やまれます。
Mecorderとか入れると、H.264とかAACつかってDVDからのエンコサーバにもなりますが、そこまでのスペックもないし、現在の仕様用途だとそんな事は出来ません。
あくまで、個人で楽しむ範囲で。
今回はテスト、開発用で。