2010-09 << 2010-10 >> 2010-11

2010-10-04 (月)

*[Android] VideoViewでニコニコ動画を再生する

VideoViewはURL渡せばダウンロードしながら再生してくれて便利なのですが、Cookieを渡せないという問題があります。最新のAndroidのソースを読む限りだと、リクエストヘッダーを指定できるメソッドが見え隠れしていますがSDKでは公開されていないので使えないようです。

方法を探りましたが無理っぽいのでさっさと諦めてCookieを付加するHTTPプロキシを通すことにします。ただ、外部サーバーが必要なのは面倒だし、ユーザーのセッション情報を管理するリスクは避けたいので、Androidアプリ内部でプロキシサービスを実行しておいてlocalhostにつなぎに行くようにしました。

気を付けないといけないのは、VideoViewはHTTP1.1必須で、たとえAccept-Rangeヘッダが無くても未ダウンロード位置にシークするとRangeリクエストしてくることです。まぁ、ニコニコの動画サーバにそのまま投げれば良いだけですが。

あと、接続をacceptしてから、レスポンスを返すまでに時間がかかるとすぐに「再生できません」とか言い出す気がするのでとりあえず何か返すのが良いかもしれません(あまり確認してないですが)。

コメントを動画に重ねることも出来るので、あとは特に問題なくプレーヤー作れる気がします。

ただ、自分で作ってる時間は今のところない…

@dabits がAndroid用のプレーヤーのソースを公開していたのを思い出したので、上記のプロキシを入れて送りつけておきました。

後から気づきましたが、長い動画だと再生中にCookie内にある再生期限が切れてシーク等で再接続が入ると失敗するな。定期的にwatchにアクセスして更新するか。ちゃんとキャッシュするようにすればよっぽど遅い回線じゃない限りタイムアウトしない気もするのでそっちもやろう。

2010-09 << 2010-10 >> 2010-11