Last update: 2010/01/09

MKK-NET 散財日記

December, 2008
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

12/20 Sat

PxVC1100×CRI SpursCoder×携帯動画変換君がおもしろい!!

職場の同僚がPxVC1100を買ってトランスコードの速さを私に話してくれた。もともと気になっていた製品だけに性能の良さを知ってしまい購入意欲に火が点いてしまいました。というわけでさっそく購入(ぉ

付属のDVD MovieWriterでトランスコードを試してみましたが、変換元になる素材の制限がかなりあって使えたものではない。ほかに何か使えるツールはないかと探してみたら「CRI SpursCoder」を見つけました。CRI SpursCoderは、CRI・ミドルウェアがテストバージョンとしてフリーで公開しているSpursEngineを使用したH.264エンコーダです。ただテストバージョンということもあり、操作はコンソール、エンコードは映像のみという制限があります。コンソールで使えるということは、携帯動画変換君で使えそうということでさらに情報を収集することに。

そしたら、やっぱり情報がある。iPod用MP4への変換に利用しようとしてる人がいて携帯動画変換君を使っている。この情報を元にPSPに変換する環境を作ることに。

作り始めて最初の壁に当たりました。私は普段動画をDviXで保存しているのですが、これらはそのままCRI SpursCoderではエンコードできない。調べてみたらAviSynthでうまくCRI SpursCoderに映像を受け渡すことができることが分かりました。あと、私が保存している動画のフレームレートは59.94fpsと29.97fpsと23.9 fpsの3種類があるが、PSPではフレームレートを高くする必要がないので29.97fpsで受け渡すようにする。

次に携帯動画変換君のTranscoding.iniの設定。「こまぷろぐ」(http://plaza.rakuten.co.jp/comapple/diary/200812100000/)の情報を参考にして設定してみる。だけどPSPで再生できない。QuickTimeでも再生できない。さらにいろいろ調査するとH.264のプロファイルが原因だと分かる。PSPのプロファイルはMainのレベル3なのにCRI SpursCoderのデフォルトのプロファイルはHighのレベル4.1でした。この情報を元に書き直すとうまくPSPやQuickTimeで再生できるMP4が生成されました。

<Transcoding.iniのソース一部抜粋 ただしCriSpursCoder、ffmpeg最新版(ffmpeg_2にリネーム)、MP4Boxを携帯動画変換君インストール配下のcoresフォルダに導入済みの状態で>
[Item3]
Title=H.264/1024kbps, AAC Stereo/128kbps
TitleE=H.264/1024kbps, AAC Stereo/128kbps
Command0=""<%AppPath%>\cores\CriSpursCoder" -in="<%InputFile%>" -out="<%TemporaryFile%>.264" -kbps=1024 -pr=29970 -h264_profile=Main -h264_level=3.0"
Command1=""<%AppPath%>\cores\ffmpeg_2" -y -i "<%InputFile%>" -ab 128k -ac 2 -ar 48000 -f aac "<%TemporaryFile%>.aac""
Command2=""<%AppPath%>\cores\mp4box" -add "<%TemporaryFile%>.264" -add "<%TemporaryFile%>.aac" -fps 29.97 -new "<%OutputFile%>.mp4""
Command3=""<%AppPath%>\cores\ffmpeg_2" -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.thm""
Command4="rm "<%TemporaryFile%>.aac""
Command5="rm "<%TemporaryFile%>.264""

※ NicMP4BoxよりMP4BoxのほうがPSPにはよさそうでしたのでソースを書き直しました。

エンコードができるようになってまた問題。今までの設定はPSPの解像度480×272にあわせて動画を出力する設定にしてました。入力する動画のアスペクト比が16:9なら問題ありませんが4:3だと横に引き伸ばされてエンコードされる。さすがにPSPで横に引き伸ばされた動画を見るのはつらい。4:3の動画が入力された場合、自動でサイドに黒帯をつける設定を模索することにしました。動画再生時にPSPの表示設定を4:3にすれば、ちゃんと見えるのですけど…いちいち変更するの面倒ですよね(ぉ

調べていると「情報慈円」(http://d.hatena.ne.jp/nao_19/20080927)の情報がありました。function DoResizeのソースをfunc.avsiのファイルにして、AviSynthのインストールフォルダは以下にあるpluginsに保存。avsiのファイルをプラグインフォルダに入れると自動で呼び出しができるようになるみたいです。そして、携帯動画変換君のインストールフォルダ以下のcoresにあるavsファイル(私の環境ではAVS_Skelton_PSP.avs)を編集。これまでのフレームレート変換もあわせると下記のようなソースになります。

<AVS_Skelton_PSP.avsのソース ただしAviSynthのバージョンは2.5.7以降>
DirectShowSource("<%InputFile%>",fps=29.97,convertfps=true)
DoResize(480,272)
return last

私は情報を検索しただけですが、これだけで入力する動画のアスペクト比を気にすることなくPSP用の動画をエンコードすることが可能になりました。利用させていただいたソースの作者には頭が下がります。すごすぎます。

これまでPSPで動画を持ち運ぶには、変換作業の手間と作業時間が嫌であまりこれまではやってきませんでした。しかし、PxVC1100×CRI SpursCoder×携帯動画変換君のおかげで、動画を持ち運ぶ機会が増えそうです。あとCriSpursCoderがAACエンコードに対応してくれればいうことなしですね。

12/21 Sun

昨日の注意点

いろいろ動画をエンコードしたところ、59.94fpsの素材を携帯動画変換君に入力してできた動画が、PSPで再生できない場合があることが分かりました。原因についてはよく分からないのですが、対策としては携帯動画変換君のTranscoding.iniの設定でアイテム数を1つだけにすれば再生できないファイルが作成されにくいことが分かりました。

DivXをAviSynthを通してる場合だけなのかちょっといろんな素材を入力してみないと分かりません。

<追記> PSP用のMP4を作るときはnicMP4Boxより、MP4Boxの方がいいのかな。ちょっと導入して様子見ます。

<追記2> MP4Boxの方がよさそうです。いろいろエンコードして検証を続けてみます。

12/27 Sat

CRI SpursCoder Ver.1.00.04

エンコード後の画質があがった。同じビットレートでエンコードしてブロックノイズが目立っていたところが解消されました。PSPでの視聴であれば問題ないレベルになりつつあると思います。