2012年6月8日

ガラケーで撮影した動画をiPhoneで見れるようにする


手元にガラケーで撮影したASF形式のムービーが大量にあって、以前から変換しようと思っていてようやく変換したので手順を記事にしてみる。複数のASFファイルをH.264+AAC+MP4形式に変換するのが今回の目的。私が今回作業をした環境はMac OS X 10.5 Leopardだった。
1. MacPortsをインストール
ここの “dmg” disk images for ... から各自の環境に合うMacPortsをダウンロードすること。dmgファイルのダウンロードが完了したらダブルクリックでインストールできる。

2. ffmpegをインストール
変換の前にMacPortsで必要なものをインストール。ターミナルから以下のコマンドを入力。今回は動画の変換にffmpegを利用する。ffmpegのインストール時に+x264 +faacをつけるのを忘れないこと。
sudo port install x264
sudo port install faac
sudo port install ffmpeg +x264 +faac

3. 1つの動画を変換してみる
変換するASFファイルのプロパティはQuickTimeのムービーインスペクタで確認すると以下のように表示された。ビットレート220kbpsと出ているが、ffmpegでは動画は400kbps、音声は32kbpsと表示されている。これはPerianでうまくASFファイルを読めていないせいかもしれない。
ファイル名MOLxxx.ASF
オーディオフォーマットMicrosoft G726, モノラル, 8kHz
ビデオフォーマットMicrosoft ISO MPEG-4 V1.1, 176x144, 15fps
ビットレート約220kbps
以下が、変換をおこなうコマンド。
ffmpeg -i MOL00C.ASF -vcodec libx264 -vpre default -b 128k -acodec libfaac -ar 16000 -ab 16k test.mp4 

4. 大量の動画をまとめて変換する
使用したRubyスクリプト。ファイルはこれ。以下をコピペするのが面倒な人は使ってください。中に2つファイルが入っていて、asfconv.rbが変換スクリプトです。
#!/usr/bin/ruby

ops = ""
ops << "-vcodec libx264 "
ops << "-vpre default "
ops << "-b 128k "
ops << "-acodec libfaac "
ops << "-ar 16000 "
ops << "-ab 16k "

Dir::glob('*.ASF').each {|infile|
  outfile = infile.sub("ASF","mp4 ")
  cmd = "ffmpeg -i " + infile + " " + ops + outfile
  p cmd
  system(cmd)
}
アクセス権限を変更して実行する。
chmod 744 asfconv.rb
./asfconv.rb
ビットレート(-bと-abの後ろの値)は各自好きな値にする。私の場合は、もともと解像度がQCIFな上に画質もちょー低かったから128kbpsとかなり低めに設定した。これで変換した動画をiPhoneにメールで送信して視聴できることを確認した。
細かい設定は全くしていないのだが、ログを見るとどうやらCABACやBフレームは有効になっているようだった。iPhone 4はメインプロファイルまでサポートしているから見れたのかもしれない。ベースラインプロファイルまでしかサポートしていない3G/3GSだとこの設定では視聴できない可能性がある。3G/3GSで視聴可能な動画を作るにはオプションに"-coder 0 -bf 0"を加えれば見れるかもしれない。デフォルトの設定だと、ファイル中に記述してある動画のプロファイルはハイプロファイルになるみたいだけど、このままでもiPhone 4で見れたからiPhoneの場合はそのプロファイルで使用しない機能をオフにすればよいのかもしれない。もし、この方法で3G/3GSで試した方がいて見れない場合はレポートもらえるとありがたいです。遠慮なく文句行ってください。

5. 結果を見る。
で、変換した動画のファイルサイズの比較を10個ほど抜粋。60個ある動画で平均して35%のサイズに変換できた。(128 kbps+ 16kbps)/(400kbps + 32kbps)=0.3333...だから妥当な結果だろう。以下の表はasfconv.rbに付属のconvstat.rbで確認できる。
Input fileSizeOutput file sizeConv. ratio[%]
MOL001.ASF4585842153634933
MOL002.ASF165277658139835
MOL003.ASF204204695802446
MOL004.ASF5392880198767436
MOL005.ASF93179031912334
MOL006.ASF94000034432236
MOL007.ASF66555033301750
MOL008.ASF54262817297231
MOL009.ASF174699058679233
以上、大量にあるガラケーで撮影した動画をiPhoneで見れるフォーマットのH.264+AAC+MP4形式に変換した。変換した動画は、iPhoneに入れるもよし、iMovieで編集して1つのファイルにまとめるもよし、YouTubeで公開してもよし。ちなみに、ffmpegはガラケー動画じゃなくて、例えばFlash動画なども変換可能。

0 件のコメント:

コメントを投稿