Daily Archives: 2009年7月4日

Android用地

Androidネタはこっち(どっち?)に移すことにしました。
べつに人里離れた場所で細々とやりたいとかそういうわけではないです。たぶん。

Androidでニコニコ動画を見るのが無理な理由もしくは見るのに必要なもの

オーディオについてはaacかmp3だが現実的な範囲ではほぼ何でもOKで、引っかかる可能性があるとすれば超高音質動画でaacの最大ビットレート160kbpsに引っかかる可能性がある?くらいか。
基本的にそのまま再生できると考えて良いと思われる。
ビデオについては問題が多い。
まずflvが一切再生できない。OpenCoreでも現時点で対応予定がないので絶望的。
再生可能なのは.3gpか.mp4で、コーデックはH.263,H.264,MPEG-4が可能。ニコニコのH.264なmp4動画はフォーマット的には再生可能だ、が、実際は再生できない。現在のAndroidでは最大解像度が480×320で600kbps以下に限られる。表示の解像度ではなくファイル側の解像度がこれを越えてしまうとその時点で拒否られる。ニコニコの解像度はデフォルトで512×384なので解像度がオーバーしてしまう。実際、拒否られた。
よって何らかのトランスコードを行わなければニコニコ動画を見るアプリは作れない。mp4限定なら何とかとも思ったがそれも無理のようだ。
(解像度についてはAndroid2.0とか出れば状況が変わる可能性はある)
ニコニコ側に(youtubeのような)iPhone用のAPIがあればいいのだが、ニコニコのiPhoneアプリはいわゆる「ニコニコ紙芝居」でありまともな低解像度mp4はどこにも用意されていないようだ。
うーん、めんどくさいね。解決策としてはffmpegを使って俺俺トランスコードサーバを用意してしまうとかあるけど、Android側で解像度制限が緩和されたりニコニコ側で低解像度mp4が用意されたりすると意味がなくなるし、地球にもやさしくない。
NDKでffmpegをコンパイルする的なことも考えたけどそれこそ酬われる気がしねえ。
とりあえずffmpegを使ってAndroidで見られる形式に変換するだけなら

ffmpeg -i video.mp4 -s 480×320 -vcodec libx264 -r 30 -bufsize 65536k -b 160k -maxrate 160k -minrate 120k -nr 600 -qmin 10 -qmax 51 -subq 6 -refs 5 -flags2 bpyramid -acodec copy -threads 0 video2.mp4

こんな感じでOK。とりあえず見られる。