たまには役に立つ記事でも書いてみようかと。自分用のメモでもありますが。
ビデオファイルをPSPで見られる形式に変換する方法はいろいろありますが、フリーソフトの『携帯動画変換君(3GP_Converter)』 を使うのがポピュラーでしょう。使い方にクセはありますが、慣れると使いやすいし、画質もよく、なによりフリーですからね。
しかし、『携帯動画変換君』の開発は2005年までで終了していて、使われているエンコーダ(フリーソフトであるffmpegやフリーライブラリであるx264)はかなり古いバージョンのものです。そこで、ffmpegを新しいものに入れ替えるとイイコトあるかと試してみたところ… 凄くイイコトあったんですよ!
- 変換可能なビデオの種類が増えた
- 変換速度が向上した
- 画質が向上した
1番はわかっていたことでした。ニコニコ動画等で使われている FLV/VP6 などに対応できるようになります。でも2と3は予想以上の効果でしたね。
速度は、例えば 1280*720pixel の22分のビデオのエンコード所要時間が、9分22秒から6分11秒に向上しました。実に1.5倍です。マルチコアへの最適化と、SSE2対応が効いているのでしょう。旧ffmpeg ではマルチスレッドオプションを付けてもCPU使用率は65%くらいでしたが、新ffmpegでは95%くらいになります。ちなみに計測したPCのCPUは Core2Duo E6300(定格1.86GHz を 2.66GHzにオーバークロック)です。
画質は、明らかにシャープになりました。例えば『薄い色の背景に白ふちの黒い文字がある』というシーンで、旧ffmpegでは文字がにじんで白ふちが見えなくなりがちなのが、新ffmpegでは白ふちがキッチリ見えます。それでいてノイズ感は増えていません。エンコードのアルゴリズムが優秀になったのでしょう。旧バージョンよりも細かい設定ができるので、さらに追い込むこともできるでしょう。僕はデフォルトで十分ですが。
以下に、携帯動画変換君で最新のffmpegを使う方法について、PSP用に特化して書きます。iPodなどについてはこちらのWikiに情報があります。
1.携帯動画変換君 ver.0.34 を公式サイトからダウンロードして、インストールします。
2.こちらのサイトから、最新のffmpegのバイナリを入手します。僕はrev.15533を使っています。このバージョンでは3種類ありますが、Core2Duoの場合は"Pentium4用"を使います。
3.携帯動画変換君の"cores"フォルダにあるffmpeg.exe を、2で入手したものに入れ替えます。
4.新ffmpegでは、オプションの記述方法が変わっているので既存の設定ファイルは使えません。なので Transcoding.ini を以下のように書き換えます。(わかってる人は、default_settingに設定を書いてももちろんOKです)
[Info]
Title=機種別設定:PSP向け設定 (AVC)
TitleE=Model: AVC, for PSP
Description=PSPで使われているAVC形式に変換します。
DescriptionE=for PSP format.
[Item0]
Title=480x272/23.98fps/768kbps
TitleE=480x272/23.98fps/768kbps
Command0=""<%AppPath%>\cores\ffmpeg" -threads 2 -y -i "<%InputFile%>" -flags bitexact -vcodec libx264 -coder 1 -vlevel 13 -bufsize 128 -g 250 -s 480x272 -r 23.98 -qmin 15 -b 768k -acodec libfaac -ac 2 -ar 48000 -ab 128k -f psp "<%OutputFile%>.MP4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.jpg""
[Item1]
Title=480x272/29.97fps/768kbps
TitleE=480x272/29.97fps/768kbps
Command0=""<%AppPath%>\cores\ffmpeg" -threads 2 -y -i "<%InputFile%>" -flags bitexact -vcodec libx264 -coder 1 -vlevel 13 -bufsize 128 -g 250 -s 480x272 -r 29.97 -qmin 15 -b 768k -acodec libfaac -ac 2 -ar 48000 -ab 128k -f psp "<%OutputFile%>.MP4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.jpg""
5.携帯動画変換君(3GP_Converter.exe)を起動して、プルダウンメニューから好きな設定(23.86fpsか29.97fpsか)を選び、変換したいビデオファイルをドラッグ&ドロップします。fpsは、映画やアニメなら23.86fps、ホームビデオやテレビ番組なら29.97fpsを選ぶのが一般的です。
実は上記の設定はPSP-2000用であり、PSP-1000(旧タイプの厚いやつ)では再生できない可能性があります。以前に旧ffmpegで似た設定でやったときはダメでした。理由はわかりません… "-qmin 15 -b 768k"のかわりに"-qmin 25 -b 512k" とかしてビットレートを下げると、再生できるかもしれませんが、PSP-1000が手元に無いのでわからないのでした。
"-b 768k" がビデオ全体のビットレートなので、ファイルサイズを減らしたい人はこれを適当に減らしてください。
"-title" オプションは指定しないのが無難です。携帯動画変換君に付属のffmpegは、作者さんが改造して日本語タイトルに対応しているのですが、本来のffmpegは対応していないそうです。日本語タイトルを入れても変換は正常終了して、PCでは再生できるのですが、PSPだと『非対応ファイル』になってしまいます。PSPはtitleチャンクが空の場合はファイル名がタイトルになるようなので、指定しなくても支障ありません。
Wikiにも書いてありますが、いわゆるドコモやauの携帯電話用のビデオに変換する場合には、新しいffmpegを使うといろいろ支障があるようです。そちらの用途でも使う方は、新旧ffmpegを併用できるように工夫する必要があるでしょう。僕は、最強携帯ビデオプレイヤーであるところのPSPを持ち歩いているので、携帯電話でビデオ見ようとは思わないですけどね。
最近のコメント