Plaggerでニコニコ動画をPodCastとしてiTunesに登録する on SnowLeopard
9 月 10th, 2009タイトルのとおりですが、MacOS X 10.6 Snow Leopardが発売されたので、再インストールと同時にPlaggerの環境も再構築してみた。
同時に、これまでiPhoneで再生出来なかった、mp4形式の動画の再エンコードも対応済み。
1.SnowLeopardへのPlaggerのインストール
以下の記事を参考に、全力でインストールした。
LeopardにPlaggerを全力でインストールしてみる by PoWerStationさん
大まかな流れとしては、
で、Plaggerの準備が完了する。記事ではいくつかのモジュールのインストール時にエラーが出ていたみたいだが、僕のSnow Leopard環境ではエラーが出なかった。めでたし。
2.Plaggerモジュールのインストール
Plaggerのインストールが完了したら、ニコニコ動画をダウンロード&エンコードするモジュールをインストールする。
これは、いくつかの記事を元に自分にあった動作のモジュールを選んでインストール。
ニコニコ動画からPlaggerでPodcastを作りiTunesで見たいゼ by PoWerStationさん
⇒導入の流れをわかりやすく説明してくれている
Plagger::Plugin::Filter::FetchNicoVideo でニコニコ動画(SP1) H.264 形式対応 by SmallStyleさん
⇒去年のニコニコ動画のH.264、SWF対応の対策
Filter::FLVInfo書いた by はこべにっき#さん
⇒ニコニコ動画ではアスペクト比が16:9と4:3のものが混在しているようなので、その対応
Plaggerでニコニコ動画を一括ダウンロード&変換 Podcast を生成して iPod touch で見る - 2007年11月最新版 by ゆーすけべー日記さん
⇒Plagger×ニコニコ動画の先駆者の記事(だと思われる)
基本的に必要なモジュールと、Plaggerでの処理の流れは以下のとおり
- Plaggerでyamlを起動
- Filter::FetchNicoVideoを起動
⇒ニコニコ動画からの動画のダウンロードを担当 - Filter::FFmpegにて動画とエンコードオプションを指定
- FFmpeg::Commandでffmpegバイナリを起動し、動画をエンコード
- Filter::RewriteEnclosureURLとPublish::FeedでPodCastのフィードを作成
問題なのが、2年の間に各モジュールがいろんな人にアップグレードされているため、オプションなどの仕様が異なること。そのため、yaml、FetchNicoVideo.pm、FFmpeg.pmの中身を見ながら、使いやすいように修正した。
いろいろな人の要素が混ざっているので、以下に概要を記述しておく。
- DBを使って、ダウンロードを管理(一度ダウンロードした動画はダウンロードしない)
- flv、mp4形式の動画のダウンロードとエンコード
- iTunesへの登録及び、iPhone OS3で再生できるようにエンコード
- h264を使用しているため高画質だが、エンコード速度は遅い
- コメントはダウンロードしない
- swf形式の動画はダウンロードしない
- PodCastのフィードを書き出し
- 昨年のニコニコ動画のログイン仕様の変更に対応
3.iPhone OS 3.0への対応
FetchNicoVideo.pmの0.02でH.246のダウンロードは対応出来るように修正されていたけど、そのままだとiTunesへの登録はできるが、ベースプロファイルの関係で、iPhoneでに転送&再生されない。
iPhone 3GS向け動画エンコード設定(H.264) / AviUtl-x264GUI by 髭日記出張所さん
そのため、再生可能なオプションで再エンコード出来るように修正。
具体的には、拡張子がmp4の動画は同名ファイルでエンコードできないので、別名をつけてエンコードするだけ。
また、上記の記事にあったアスペクト比での振り分けがFLVInfo.pmを使う関係上、拡張子がFLVの動画でしか出来ないため、オプションからはずし、元動画のサイズでエンコードされるように変更。今のところ、ニコニコ動画はには最大640pxの動画が多いので、
640px以上の動画が再生できない > mp4形式の動画が再生できない
という考えで、640px以上は無視。
本来的には、mp4形式の動画もアスペクト比を計って振り分けたほうがいいが。
4.エンコードの高画質&高速化
最後に、画質とエンコード時間をトレードオフしながらyamlのエンコードオプションを設定。
僕が設定しているオプションはこんな感じ。
option_string: ‘-threads 0 -vcodec h264 -r 29.97 -b 600 -level 13 -loop 13 -refs 6 -mbd 2 -cmp 2 -me umh -qmin 12 -qmax 24 -sc_threshold 60 -subcmp 2 -flags2 bpyramid+wpred+mixed_refs+brdo -acodec aac -ar 44100 -ab 160k -ac 2′
以下は必須
- ビデオコーデック[-vcodec]
- フレームレート[-r]
- ビットレート[-b]
- ベースプロファイル[-level 13](13にしないとiPhoneで再生できない)
- オーディオ[-acodec]
- サンプリング周波数[-ar]
- ビットレート[-ab]
- チャンネル数[-ac]
その他は、画質とか速度に関するオプション。特に、以下の2つが画質と速度のバランスに大きく関係する。
- スレッド数[-threads](h264の場合は0を指定すると自動でマルチCPUに対応)
- 画質[-qmax][-qmax](h264の場合は、qminは10以上が良いらしい
詳しい設定はこちらを参考に。
最新FFmpeg by mobilehackerzさん
以上で、設定終了
この設定でplaggerを起動すると、大体の動画がダウンロードでき、iPhoneで再生できるようになった。
設定のyamlと、修正したモジュールを以下にUPしておくので、よかったら参考にしてください。

