2011年2月25日

AndroidのVideoViewにてHTTP経由で再生できない件

 Android で動画再生するには VideoView を使うと簡単だよ。って話はそこらじゅうに転がっている。確かに簡単である。

 しかし、ネット越しに再生しようとすると、"Sorry, this video is not valid for streaming to this device." というメッセージが出て再生できない。ローカルに置けば再生できる。エミュレータでは失敗するのに、実機だと再生できちゃったりする。

 エラーメッセージでググっても、なんだか要領を得ない情報しか引っかからない。

 エラーメッセージから考えると、プログラムが悪いんじゃなくて、ファイルが悪いのだろう。だが、ストリーミングに向いてないとはどういうことだろうか?

 いろいろ調べたら、ドコモiモーション向けの話だが、mdatの前にmoovが必要だとか書いてある。それを調べるには MP4Boxというコマンドで、というので手元のmp4ファイルを調べてみたら、その順番で格納されているようだ。

 MP4Box についていろいろ調べたら、他にも情報が見つかった。-inter 500 オプションを付けて実行し、変換すると良いらしい。

 その通りやってみたら、めでたく再生できた!

 詳細については、さらにググって調べて下さい。

 エミュレータの動画再生能力は実機よりも貧弱で、重い動画は真っ暗になる場合がある。絵が出ないのはなんでだろうとか余計なことで悩まないように、320x240とかの動画ファイルで試した方が良いだろう。

Posted by rukihena at 02:12:28
トラックバックURL

このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/896

コメント