Androidで動画を再生する

Androidの公式ドキュメントのFAQには比較的わかりやすい場所にMediaPlayerに関する記述があります。そしてそのリンク先にはMediaPlayerの使い方が記述されたページがあります。


http://code.google.com/android/toolbox/apis/media.html


このページを見ると皆さん、あることに気づきませんでしょうか。
動画も音楽もこのMediaPlayerで再生できると記述してあるのですが、実際のコード例を読むと音楽の場合しか記述がありません。これはMediaPlayerのJavaDocを読んでもちっともわかりません。ネットワークではMIMEの設定が必要とか書いてありますが、肝心のどのMIMEが使えるのかは書いてありません。


公式でたったこれだけの情報しかないのに数多くの人が動画再生にチャレンジし、極一部の人は成功してしまったようです。
Davanum Srinivasさんがその一人です。

http://davanum.wordpress.com/2007/12/29/android-videomusic-player-sample-from-local-disk-as-well-as-remote-urls/

このページを読むとわかるのですが、Androidは3gp形式の動画を再生できるようです。ようですというのには訳があります。彼のプログラムはm3用であり、最新のm5では実行できないのです。


そこで公式ドキュメントに従ってm5にmigrateしてみました。
manifestを修正し、プログラムの一部を修正するだけでなんとかなりました。こちらに上げておきましたので使ってみてください。

http://code.google.com/p/feedimageviewer/downloads/list

それで実行してみたのですが、どうも3gpの再生中に落ちます。ほんの少し再生されるのですが例外も出ずに落っこちてEclipseのログには不思議なデバッグログが記述されています。
どうもm5は音楽フォーマットは増えたようですが、動画再生機能は劣化してしまったのでしょうか?それとも私の修正方法がまずかったのでしょうか?

手元にmp4ファイルがあったので"adb push"して再生してみたところ絵は出ずに音だけ再生されました。こちらは途中で落ちそうにありませんでした。どうもcodecに関して色々と制約がありそうです。詳しい人にぜひチェックをお願いしたいところです。