Androidでvideoタグによる動画再生を実装する際の落とし穴
HTML5ではvideoタグにより、動画を簡単に埋込める。スマートフォンサイトで動画を埋込む方法は検索すれば、役に立つ情報を掲載しているサイトがいくつも出てくるので、詳しいことはそれらを参照してもらうとして、結論から言うと以下のタグでiPhoneおよびAndroidに対応できるようだ。
参考ページ
http://sogitani.baigie.me/2011/07/smart-phone-movie/
http://today-only.net/html5-video/
(この2ページがとくに分かりやすくまとまっている)
<video src=”xxxxx.mp4″ preload=”none” poster=”xxxxx.jpg” onclick=”this.play();” controls >
<source src=”xxxxx.mp4″$gt;
</video>
iOSだと比較的すんなりと実装できるのだが、Androidでは一筋縄ではいかない数々の罠がしかけてあって、全てをクリアしなければならない。
私は落とし穴にハマりまくったので、確認すべきポイントを列挙しておく。
- ◆動画形式、コーデック
iOSでも再生させることを考慮すると、必然的に動画形式はmp4になだろう。コーデックはh.264。
動画変換はMacならこれが良いと思う(というか私はこれで変換したもので実装できた)http://jp.any-video-converter.com/any-video-converter-free-for-mac.php
- ◆videoタグにonclick="this.play();"を入れる
入れないとAndroidの端末によっては再生してくれない模様。
これはハマる。Basic認証が原因かもしれないという発想がそもそも湧かないわけで。
- ◆sourseタグにはtype属性は入れてはいけない
この落とし穴にハマって抜け出るのにどれだけかかったか。type属性があるとタップしても無反応になってしまうとか、全く意味不明。
追記
Basic認証をかけている状態だと、iOSではposter属性で指定した画像が表示されないようだ。
どうやら動画再生にBasic認証は鬼門のようだ。