W44Sの動画再生機能について

- W44Sには,PSPやiPodに近い水準の動画再生機能がある.
 携帯電話としては高画質で強力なもの.

- この機能と対応ファイル形式をソニーはMemory Stick Video (以下M.S.Video)と
 呼んでいる.(Palm互換PDA 'CLIE' の頃から続いている呼称)

- また,AU携帯共通の「着うた系」の動画再生機能も装備している.
 ムービー撮影機能の撮影動画再生機能とあわせて,異なる3つの系統の
 動画再生機能がある.

- W44SのM.S.Videoで再生可能な形式はH.264とXviD.
 H.264はBaseline/320x240に対応.これは現在のPodcast形式に準じたもの.
 PSPで使えるMain Profileは使えないので注意.

- H.264 Baseline 320x240 で作成した動画は,W44S/PSP/iPodで共用できる.
 汎用性の高さから,このページではH.264の作成を主に扱う.


W44SとPSPで同じ動画ファイルを再生できる
H.264動画のエンコードについて

大まかに3つの方法がある.

1.携帯動画変換君 ver0.34 (フリーウェア) を使って行う.
 必要十分なエンコード品質.本ページに掲載した設定で
 とりあえず変換できるのでおすすめ.

2.ソニー製の市販ソフトウェア 'Image Converter' のver3以降を使う.
 手軽さに引かれて購入してみた.しかし画質にやや難あり.
 字幕のある映画には向かない.だが普通のテレビ番組などには問題ないので
 録画番組を毎日転送するような人にはおすすめ.

3.最新のffmpegやx264.exeを使う.
 凝り性の人におすすめ.今はOn2 VP6周辺が騒がしいようだ.
 情報がすぐに陳腐化しそうなのでここでは扱わない.

携帯動画変換君 ver0.34 でエンコードする

携帯電話やPSP用の動画作成で皆がお世話になっている
有名なフリーソフト '携帯動画変換君' について.

まず必要なものをダウンロード.

ダウンロード (携帯動画変換君)
携帯動画変換君 ver0.34 | AviSynth | iTunes

次に,W44Sの専門サイトにある解説を読む.
ここでW44S_full_02.zipも入手しておく.
(W44S_full.exeは変換君のcoresフォルダの中に入れる)

W44S-Lab (Sony Ericsson Mobile Laboratory)
http://sony.ty.land.to/?cmd=read&page=W44S

このサイトで入手できる設定でまず実験して
問題なく変換できることを確認する.

携帯動画変換君 ver0.34 の設定

Transcoding.ini (設定の一例)
[Item0]
Title=320x240+W H.264 768kbps src-fps 48kHz 128kbps
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -title "<%Title%>" -hq -async 1000 -bitexact -vcodec h264 -vprofile baseline -coder 0 -bufsize 256 -vlevel 13 -qns -qpel -mbd 2 -4mv -trell -aic -me full -aspect 16:9 -s 320x240 -g 300 -b 768 -acodec aac -ac 2 -ar 48000 -ab 64 -f psp "<%TemporaryFile%>_1.mp4""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>_1.mp4" "<%TemporaryFile%>_2.mp4" -c QT_H264_QVGA_AAC.ini -t mpg4"
Command2=""<%AppPath%>\cores\ATOMChanger" "<%TemporaryFile%>_2.mp4" "<%TemporaryFile%>_3.mp4" "Camouflage_MP4_for_PSP.ini" "<%Title%>""
Command3=""<%AppPath%>\cores\W44S_full" "<%TemporaryFile%>_3.mp4"
;Command4="cmd /c "copy "<%TemporaryFile%>_3.mp4" "<%OutputPath%>MAQ<%RandomNumber5%>.MP4"""
Command4="cmd /c "copy "<%TemporaryFile%>_3.mp4" "<%OutputFile%>.mp4"""
Command5="cmd /c "del "<%TemporaryFile%>*.*"""

cores\AVS_Skelton_W44S.avs (このファイル名で作成)
# 3GP_Converter AVS-Mode skelton

DirectShowSource("<%InputFile%>", convertfps=true)
# DirectShowSource("<%InputFile%>",fps=24,convertfps=true)

LanczosResize(320,240)

return last

3GP_Converter.ini (Avisynthの項目を変更)
[Avisynth]
Ext0=WMV:\cores\AVS_Skelton_W44S.avs
Ext1=WMA:\cores\AVS_Skelton_W44S.avs
Ext2=ASF:\cores\AVS_Skelton_W44S.avs
Ext3=AVI:\cores\AVS_Skelton_W44S.avs
Ext4=MPG:\cores\AVS_Skelton_W44S.avs
Ext5=MP2:\cores\AVS_Skelton_W44S.avs
Ext6=FLV:\cores\AVS_Skelton_W44S.avs

設定例の解説

上記の設定の目的は次のようなもの.

- 320x240 H.264 (Baseline Profile)を作成
- 出来たファイルはPSPとW44Sの両方で使える
- フレームレートは変換しない.なるべくソースと同じにする.
- 入力ソースは16:9を想定

- ワイド画面対応.W44SとPSPでの再生時には自動的に横長に拡大される.
 W44S_full.exe とオプション -aspect 16:9 を併用している.

- オプション -timestamp を入れている
 timestampがないとW44Sの日付表示値が1970/1/1になってしまう問題を回避

- オプション -muxvb による偽装ビットレートを使わない.
 ビットレートを偽装したファイルをW44Sで再生しようとすると,再生開始時の
 シーク動作に時間がかかり数十秒待たされる症状が出る.この問題を回避.

PSPの古いファームウェアや昔の携帯電話用の設定ではビットレートの偽装が日常的に
行われていたが,その頃のエンコード設定をW44S用に流用してはいけない.

また,3GP_Converter.iniの設定を使って,ソースファイルの読み込みに
AviSynthを経由するようにしている.その目的は

- AviSynth側で320x240への高画質リサンプルを行う.
 ffmpegでリサイズすることによる画質の劣化を回避.

- AviSynth側でconvertfps=trueの設定を行う.
 この設定は音ズレの防止に効果がある.

設定の注意点

- 映画やアニメの23.976fpsの動画は24fpsに変換したほうがいい.
 その理由は

 1.変換君0.34に付属するffmpegには23.976fpsの動画で音ズレするバグがある.
  整数値のフレームレートに変換したほうがいい.

 2.そのときは24fpsへ変換するといい.滑らかな動きを維持できる.

  30fpsへ変換する設定を掲載しているサイトもあるが,これはお奨めできない.
  重複フレーム挿入で23.976fps → 30fpsにアップレートした動画は
  W44Sでは滑らかな動きを失ってカクカクした感じに再生されてしまう.

 フレームレートの変換は,AVS_Skelton_W44S.avs 内で

DirectShowSource("<%InputFile%>",fps=24,convertfps=true)

 とすれば24fpsに強制的に変換できる.
 (ffmpeg側のオプションは使わずにAviSynth側で処理する)

サンプル動画





Gran Turismo 5 Trailer A/B
Ace Combat 6 Trailer
Ramen Noodles
All Your Base Are Belong To Us
BSデジタル NTV
- 本家サイトでダウンロードしたwmvを変換
- ゲーム紹介サイトからwmvを入手して変換
- YouTubeより.アスペクト比をわずかに調整
- 本家サイトのSWFをSwf2Avi経由で変換
- PV3のキャプチャサンプル; M氏に感謝
768kbps
768kbps
384kbps
384kbps
384kbps
共通: 映像 H.264 320x240 (16:9) 音声 AAC 48kHz 128kbps ステレオ

* W44Sでの再生時には'MAQ00001.mp4'などのファイル名に手動で改名して
 メモリスティックの'/MP_ROOT/101ANV01'フォルダに入れます.

* PSPでの再生時にはメモリスティックの'/VIDEO'フォルダに入れます.

* PCでの再生時にはH.264のコーデックはffdshowなどを使います.
 WMP9以降/VLC Player/Media Player Classicで再生できます.

* iPodやQuickTime Playerでの再生ではアスペクト比が反映されず
 縦長に見えますが,W44SとPSPでは正しく16:9で再生されます.

* iPodと互換性のあるワイド画面対応動画ファイルを作成したいときは
 サイズ320x180,アスペクト比16:9を指定します.

YouTube動画について

GetFLV でダウンロードした*.flvファイルを
携帯動画変換君にドラッグ&ドロップすれば変換できる.

YouTube動画を自分で変換しなくても,iPod/PSP形式に自動的に変換して
ダウンロードできるフリーツールや無料サイトなどがあるようだ.

今回,初めてYouTube動画の変換を試してみたけれど,試行錯誤の結果,
そのまま変換するのではなく,AVS_Skelton_W44S.avs 内で多少の加工を
行ったほうがいいと判断した.

16:9の画面で4:3の動画を見ると,表示範囲が小さく感じられて
なんとなく落ち着かない.これを緩和するために,上下を少し削って
画面の中央を拡大し,同時に左右方向に5%ほど引き伸ばしてワイド化するというもの.

具体的な手順は,320x240のYouTube動画を,上下を12ドットずつ削り,
左右に幅24ドットずつの黒帯を足したあと320x240にリサイズする.
4:3ではなく16:9動画としてエンコードするというもの.

# YouTube用 320x240 4:3映像の16:9への適応化 1 標準
Crop(0,12,0,-12)
AddBorders(24, 0, 24, 0, $000000)

また,字幕のある動画は上下の削り幅を半分にして対処している.

# YouTube用 320x240 4:3映像の16:9への適応化 2 字幕対応
Crop(0,6,0,-6)
AddBorders(32, 0, 32, 0, $000000)

Sony Image Converter 3について

Sony Image Converter 3
http://www.memorystick.com/jp/lifestyle/psp/manual/video.html

ダウンロード販売ページ
http://www.jp.sonystyle.com/Nws/Software_dl/Pc/Software/Original/Creative/2105710969400.html

- 手動設定時のパラメータは次のようなもの



その他

- ffmpegのfpsバグ
 ffmpegはフレームレートを分数で保持しているため,循環小数になるような
 半端なfps数でも正しく扱えるはずだが,実際には整数値でないfps数を与えると
 音ズレが起こりやすい.特に23.976fps (24000/1001fps) はダメなようだ.
 長時間の映像に対して音声が徐々に遅れる形で症状があらわれる.

 ffmpegのログ表示では,23.976fpsが23.98fpsと表示される.このことから,
 ffmpegの内部処理の小数点以下第3位の扱いの問題だと推測する説があるが,
 これは違うようだ.もし0.004fpsの誤差なら4分で1秒のズレになるはずだが,
 実際には1時間でわずか0.5秒ほどのズレだ.かなり微妙なバグのようだ.
 最新版のffmpegで直ったのかどうか不明.

携帯動画変換君でAviSynthを挟んで整数fpsに変換すれば音ズレを回避できる.

- ffmpegのパラメータ
 最新のffmpegは,携帯動画変換君 ver0.34に付属するffmpegと
 パラメータの互換性がなくなっている.そのため,ここで掲載した
 設定は最新ffmpegではエラーが出て使えない.

- W44Sの30fpsでのフレーム落ち
 W44Sでは24fps程度の再生が最大なのかもしれない.
 30fps時にはフレームの脱落が不定期に起こっているように見える.
 程度はわずかなので,普通の30fps動画の視聴には問題を感じない.

 しかし,24fpsの映画を30fpsにレートアップしたファイルだと
 問題になる.24→30fps変換時に挿入された重複フレームが
 フレーム落ちを強調してしまい,動きがカクカクしてしまうのだと思う.

- H.264のビットレート
 かなり低いビットレートでも実用的だと感じた.また,動きの激しいところでの
 破綻が少ないので,2パスエンコードしなくても耐えてくれる.
 H.264 320x240 30fps 256kbps + AAC 48kHz 64kbpsという低レートでも
 1パスエンコードで鑑賞に耐える動画が作成できるのは凄い.

- W44Sの対応するビットレート
 最大768kbpsと説明書にはあるが,5Mbpsまでのファイルならエラーにはならず
 再生してくれるようだ.(解像度は320x240までなので画質的には無意味)

- W44Sの対応するフレームレート.
 最大30fpsと説明書にはあるが,60fpsのファイルでもエラーにはならず
 再生しようとしてくれる.ただし処理が追いつかず画面が崩れてしまう.

- W44SとPSPでのメモリースティックの共有
 H.264-Baselineの動画はファイル形式に互換性があるものの
 メモリースティック内のフォルダ位置とファイル名規則が違うので,
 W44SのメモステをPSPに挿しても動画は再生できない.その逆も不可.

 MPEG4-XviDの動画はフォルダ位置とファイル名の規則が同じなので,
 W44SとPSPで共通して使えるメモステを作成できるかも知れない.
 (未確認)

- PSPのファームウェアとH.264動画の再生
 ファームウェアが古いPSPではW44S用に作成したH.264動画を再生できない.
 PSPのファームウェアはver2.8以降が必要.

ひとこと

W44Sの動画再生は予想以上に綺麗だ.
横画面時のステレオスピーカーの音も頑張っている.

メモリカードの価格容量比や,動画の再生画質,
バッテリーの持ちなどハード的な環境は劇的に改善したように思う.

しかし現状では,携帯画面の動画再生をどう使えばいいのか
いまいちまだよくわからない.

ネットの記事を真似してYouTube動画を入れたりしてみたが,
どうもピンとこない.出先のどこでもPCでネット接続が
できるのに,わざわざ小さい画面で見るためにエンコードや
転送を行う必然性がない.

今は小さいモノをいじくり回す楽しさで触っているが
飽きたら終わりという感じが常につきまとう.

実際,購入直後にいくつかエンコードして入れた以外は,
このページを書くまでの数ヶ月間,動画機能を全く使わなかった.

エンコードや転送の手間を意識せずに,好みのYouTube動画を
常に自動で転送するような簡便で単純な使い勝手が実現できれば,
おもしろいかも.

Copyright (c) 2007 Y.Usami