私は普段、動画をAdvanced/W-ZERO3[es](アドエス)に入れて、空いた時間に見たりするのが最近のお気に入りです。動画って文章よりも見るのに時間がかかるので、いつでも携帯端末で見れるってのは便利(実際には文章も携帯端末で読めると便利なことが多い。つまり携帯端末は常に便利だということ)。
自分で録画したテレビ番組はwmvなのでそのまま再生できますが、YouTubeやニコニコ動画からダウンロードしてきた動画はflvです。YouTubeのflvはTCPMPにflvプラグインを入れると再生できますが、ニコニコ動画のflvはバージョンが新しいらしく、現在TCPMPのプラグインでは対応できてないようです。
なので、適当な形式に変換(再エンコード)することになります。以前までは、PSPにニコニコ動画を入れよう!(ふぉーみゅらわん&PSP裏情報)で紹介されてる方法で、ちょっと改造した携帯動画変換君を使って変換していましたが、マウスでいちいち操作するのが面倒になったので、自分で変換スクリプト書きました。
内部的にはffmpegを使っているので携帯動画変換君と同じですが、アドエス向けに設定を固定しているため、スクリプトを実行するだけですぐに変換されます。
以下のコードをコピペして保存してください。ファイル名は何でもいいですが、ここでは convert_nicovideo.js とします。
var fso = new ActiveXObject('Scripting.FileSystemObject');
var path = fso.GetParentFolderName(WScript.ScriptFullName);
var source_path = fso.BuildPath(path, 'sources');
var archive_path = fso.BuildPath(path, 'archives');
var output_path = fso.BuildPath(path, 'outputs');
var ffmpeg_path = fso.BuildPath(path, 'ffmpeg');
var files = fso.GetFolder(source_path).Files;
for(var file = new Enumerator(files); !file.atEnd(); file.moveNext()){
var item = file.item();
if(/^(.+)\.flv$/.test(item.Name)){
var in_file = item.Path;
var out_file = fso.BuildPath(output_path, RegExp.$1);
flv_to_mp4(in_file, out_file + '.mp4');
flv_to_mp3(in_file, out_file + '.mp3');
archive(in_file);
}
}
function flv_to_mp4(in_file, out_file){
call_ffmpeg(
'-y -i "' + in_file +'" ' +
'-flags bitexact -vcodec xvid -s 320x240 -r 14.985 -b 216k ' +
'-acodec aac -ac 2 -ar 24000 -ab 96k ' +
'-f psp "' + out_file + '"'
);
}
function flv_to_mp3(in_file, out_file){
call_ffmpeg(
'-y -i "' + in_file +'" ' +
'-acodec copy ' +
'"' + out_file + '"'
);
}
function call_ffmpeg(param){
var wshShell = new ActiveXObject('WScript.Shell');
wshShell.Run('"' + ffmpeg_path + '" ' + param, 10, true);
}
function archive(in_file){
var archive_file = fso.BuildPath(archive_path, fso.GetFileName(in_file));
fso.MoveFile(in_file, archive_file);
}
Win32 Binariesをダウンロードして解凍して、
の2つのファイルを、さっきの convert_nicovideo.js と同じフォルダに配置します。
ffmpegには複数の系統があるらしいですが、私は上記のリンク先から落とせるffmpegのRevision 9017でしか動作確認していません。他のでも動くかもしれないけど。
同じフォルダに、
という3つのフォルダを作成します。中身は空っぽで構いません。
ここまでの準備が終わると、上記のような構成になっているはずです。これで準備完了。
これだけです。複数のflvを sources に置いておけば、一気に変換されます。変換スクリプトの仕様は以下の通り。
スクリプトを実行するだけで、sources フォルダ内のファイルが全部変換され、終わったら archives に移動するわけです。想定してる使い方としては、いくつかflvをためて一気に変換する、という作業を繰り返す感じです。
スクリプトの実行をタスクスケジューラに登録しておいて、夜間に流してもいいかも知れない。flvを置いておけば、朝にはmp4に変換されてる、というイメージ。スクリプトに機能を追加して、変換後のmp4がアドエスにそのまま転送されるようにすればさらに便利。
このスクリプトで使用しているffmpegの設定は、元は携帯動画変換君のPSP向け設定です。なので、このスクリプトで作ったmp4ファイルは、PSPでもそのまま再生できると思います。あと試してないけどiPodでもいけるのかな。
スクリプトは内部でffmpegにパラメータを渡して実行してるだけなので、コードを書き換えれば他の設定も可能。どんなパラメータを渡せば良いかは、携帯動画変換君に同梱されてるiniファイルが非常に参考になります。あとはffmpegのドキュメントを読めば大抵のことはできる。