====== PlaggerでニコPodを作る ====== カッとなってiPod touch 16GBを買った。今は超wktkしている──本当に衝動買いでした。俺は悪くありません。ネイティブソフト開発用のSDKを出すなんて言うAppleが悪いんです。まだまだ在庫は沢山あるという大学生協が悪いんです。なーに、nano 8GBを2つ買って16GBにする事を考えたら、touch 16GBだってそんなに高いものじゃありませんよ。うん、そうなんですよ。そうそう。そうじゃないと困ります。………カードの支払いどうしようorz そんなこんなで買ってしまいました、iPod touch 16GB。 折角動画が見れるんだからと、何かいい活用方法はないかと探していたら、[[http://plagger.org/|Plagger]]というツールを使う事でニコニコ動画の動画を**自動で**取り込めるらしいです。「自動」ってのがとても素晴らしいです。という訳で早速、ニコニコ動画ランキング取込システム、その名も「ニコPod」を構築してみました。 {{ :blog:2007:20071020_0.jpg |}} ===== インストール ===== PPC Mac mini 1.4GHz(M9687LL/A)+ Mac OS X v10.4.10上に構築しました。 インストール方法は「[[http://www.power-st.jp/blog_archives/2007/10/plaggerpodcastitunes.html|ニコニコ動画からPlaggerでPodcastを作りiTunesで見たいゼ]]」で丁寧な解説がなされているので、この通りに進めて行きます。ただし、設定ファイル(.yaml)には独自のものを用い、その関係で''Filter::FFmpeg''へのパッチも独自のものを当てます(後述)。また、[[http://www.power-st.jp/blog_archives/2007/10/platunes.html|二コPlaTunesの補足]]の''DB_File_URL.pm''関連の設定も一緒に行います。 FFmpegは、上記サイトで紹介されているバイナリではなく、MacPortsでビルドしたものを用いました。 ===== 設定ファイル ===== global: assets_path: assets/ plugins: - module: Subscription::Config config: feed: - url: マイリストのアドレス - module: Filter::FetchNicoVideo rule: - module: RecentN count: 10 - module: Deduped engine: DB_File_URL path: /Users/Decomo/Sites/nicopod/nicoPod.db config: mail: アカウント password: パスワード id_as_filename: 1 dir: /Users/Decomo/Sites/nicopod - module: Filter::FFmpeg config: dir: /Users/Decomo/Sites/nicopod ext: MP4 command: /opt/local/bin/ffmpeg encoding: utf8 option_string: '-y -threads 2 -s -r 29.97 -vcodec h264 -g 500 -aspect -level 13 -loop 1 -sc_threshold 800 -flags loop+qpel -flags2 bpyramid+wpred+mixed_refs+brdo -trellis 2 -subq 6 -me umh -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -rc_eq blurCplx^(1-qComp) -refs 6 -mbd 2 -cmp 2 -subcmp 2 -b 10k -minrate 0 -qmax 27 -qmin 20 -acodec aac -ar -ac -ab 128k' - module: Filter::RewriteEnclosureURL config: rewrite: - local: /Users/Decomo/Sites/nicopod url: http://Freyja.local/~Decomo/nicopod - module: Publish::Feed config: dir: /Users/Decomo/Sites/nicopod filename: _nicoPod_weeklyAddCount.xml format: RSS お手本とした設定ファイルと比べて、特にFFmpegのエンコードオプションにかなり手を加えています。画質重視の設定なので、PPC Mac miniには結構荷の重い仕事です。エンコード所要時間は実時間の2.5〜4倍と言った所です。 注意点として、iPod touch(現時点での動画対応iPod全て)のH.264はベースプロファイルなので、BフレームとCABACが使えません。つまり、-bfオプションと-coder 1を指定しても、再生出来ない動画になってしまいます。また、最大参照フレーム数(-refs)は6が最大です(これより大きい値だとブロックノイズが出ます)。しかし、BフレームとCABACが使えないH.264なんてゴm(ry FFmpegのバージョンによって、ビットレート指定の単位が違います。昔はkbpsだったのですが、最近はbpsになったようです。SVN-r9102ではkbpsでした。 ===== Filtter::FFmpegに手を入れる ===== 可能な限り小さい容量で高品質を目指すべく、Filter::FFmpegに手を入れます。 [[http://d.hatena.ne.jp/hakobe932/20070923/1190594172|はこべにっき#]]さん作のパッチは、動画のアスペクト比によって出力動画サイズを640x480と640x360に切り替えていますが、ニコニコ動画の最大サイズは512x384なので、そのサイズで出力しても旨みがありません。 ここではiPod touchの画面解像度に合わせて、アス比が4:3の時は432x320、16:9の時は480x272で出力する事にします。 また、元動画の音声トラックの仕様(サンプリング周波数/チャンネル数)をそのまま継承して、音声のエンコードを行うようにしました。まぁ、これは気休め程度です。本当は元のビットレートを元に、エンコードのビットレートを変えたかったのですが、生憎、元ビットレートを取得する手段が無いようなので……。 差分:[[http://www.decomo.info/files/garakuta/FFmpeg.diff|FFmpeg.diff]] はこべ日記さんの差分も取り込んであるので、FFmpeg.pmにそのまま適用する事が出来ます。 ===== cronの設定 ===== 自動的に動画の取得&変換が行われるように、cronの設定を行います。Tigerなので本来ならばlaunchdを使うべきなのでしょうが、詳しい設定方法が分からなかったのでcronに逃げました:-)。参考までに、私の設定を晒しておきます。 0 2 * * 1-6 /Users/Decomo/Tools/plagger/nicoPodDailyUpdate.sh 0 2 * * 0 /Users/Decomo/Tools/plagger/nicoPodWeeklyUpdate.sh ===== まとめ ===== 全て上手く行けば、iTunesにPodcastとして動画を取り込め、それを転送すればiPod touchで見る事が出来ます。 {{ :blog:2007:20071020_1.jpg |}} 私は、週間マイリスト登録数TOP10の動画を自動的に取得&変換するようにしています。これで流行りの動画チェックもバッチリです。 生成した動画は、動画の内容にもよりますが、元ファイルと比べて150〜200%ほどの大きさになる事が多いようです。品質犠牲にすればより小さくすることも可能ですが、私的には今以上の品質低下は避けたい所です。欲を言えばもう少し画質を上げたいのですが、容量とのトレードオフを考えると、今の設定が丁度いいかなと。 ===== 参考サイト ===== ** PoWer Station-WeBlog! .. [[http://www.power-st.jp/blog_archives/2007/10/plaggerpodcastitunes.html|ニコニコ動画からPlaggerでPodcastを作りiTunesで見たいゼ]] ** はこべ日記 .. [[http://d.hatena.ne.jp/hakobe932/20070923/1190594172|iPod touch向けのニコニコ動画のPodcastを生成する]] ** ゆーすけべー日記 .. [[http://yusukebe.com/archives/07/08/09/105502.html|Plaggerでニコニコ動画のFLVとコメントを一括ダウンロード!]]