以前作ってMP4しか使えないんじゃ微妙じゃね?だったもの。 PCが新しくなってMP4エンコード中心になったので再調整。
とりあえず、MP4なら再生が出来るところまではOKだった。 ただシークに未対応でシークバーとかボタン触ると再生止まっちゃう。 というわけでその辺りの調査から。
MediaControllerにはsetPrevNextListenersというメソッドがある。 なにになんでシークボタン側のsetがないのかと思ったら シークボタンを無効にするのはコンストラクタのフラグなのねw これ使用中に切り替えるとかはありえないって思想なのかなぁ? FastForwardボタン触ったときのListenerとかも設定できないし。 まあそこまでやるならカスタムで画面作れって話か。 しかし、ここまでやってふと気がついたのはシークバーはどうしようもねえw
というわけで今度はそもそもシークできないの?これっていう調査。 普通のApacheからMP4を再生してみる。あれ?シークできるぞ? ということで何が違うのか各種ログを確認。
あ、Rangeリクエストが処理できた場合のレスポンスって206だったのか。
という単なるhttpの把握漏れだったことが判明w そりゃ途中からは取れないと判断すれば「再生できない」になるわな。 これでシークはできるようになった。が今度はファイル終端でエラーが出る。
あ、Content-Rangeがないからか。
反応だけでやらんで一度はきちんと仕様に目を通すべきだねと反省。 というわけで、シークは問題なく出来ることが判明。 流石にローカルに比べてシークレスポンスは落ちる。 (シークした後に再生できるまでバッファ時間がかかるのだろう) それでもWindowsファイル共有に突っ込んどくだけでローカル同様再生できるのは便利。
DLNAを使えばトランスコードも出来るし使えるアプリも多いんだけど イマイチ鉄板的な組み合わせがないのがなんとも。 まあでもこれでちょっとは消費が早くなるかな? この用途に関しては7インチのTABは正解だった。 やっぱり10インチは置かなきゃ無理。それだったらPCでいい。 10インチで主流のTegra2は動画的には残念な感じだったしなw
|