携帯電話で撮った動画を日記に使おうと思いPCにコピーしてみると、拡張子が .3gpとなっています。動画はMPEG4、音声はAMR-NBだそうです。ffdshowとMedia Player Classic(以下MPC)の組み合わせで再生できますが、世の多くのPCでは再生できないと思います。
とりあえず動画をWMV、音声をWMAにして、AVI形式に仕立てておけば、誰でも再生できるはず。というわけで、ffmpegで変換を試みました。
ffmpegで変換すれば簡単だと思っていたのですが、どうも通常の状態ではAMRのデコードに対応していないようです。後でわかることですが、理由はAMRが「フリー」ではないコーデックだからなんですね。
ビルド方法については、また後日、ノートPCが復活したら調べ直して書きます。
で、なんとかffmpegビルドに成功したものの、変換後の音声がおかしい。15秒のムービーのはずなのに、変換後のムービーには音が2〜3秒しか入らず、しかも鳥がピヨピヨ囀るような、哀れな音しか鳴りません。
問題はどこかなあとffmpegのメッセージを見たら、音声のフォーマットがAMR 60kHzと認識されています。本来は8kHzなので7.5倍速ですね。そりゃ鳥の鳴き声にもなるわな。
初めにffmpegのオプションで入力側のサンプリング周波数をいじれないかと思って、ごにょごにょやったのですが、どうも言うことを聞いてくれません。
しゃーないので、元の動画のサンプリング周波数とおぼしきデータを無理矢理書き換えました。以下、参考情報。あくまでも自己責任でどうぞ。
バイナリエディタなどで動画ファイルを開いて、60000に相当するEA 60(ビッグエンディアン)のバイト列を探します。
いくつかの場所にマッチすると思いますが、3GPP AMR StrageFormatという文字列の直後にあるバイト列を8000に相当する1F 40(これもビッグエンディアン)に書き換えます。他は無視しても大丈夫です。
書き換えたら同様に変換します。ffmpegのメッセージに入力の音声形式がAMR 8000Hzと表示され、変換後の音声も正常になっていれば成功です。
それにしても8000Hzの音声に、なぜ60kHzという嘘のヘッダをつけるの?携帯業界では普通の慣習なのか、それとも俺の携帯(※)がおかしいだけなのか…。情報求む。
※N902iSを使っています。
< | 2008 | > | ||||
<< | < | 10 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | - |
合計:
本日: