W-ZERO3による動画再生

2007/08/29W-ZERO3::Tips

・・・・・・この記事「 W-ZERO3による動画再生 」は書きかけだけど、でも勘違いしないでよねっ! べっ、別に、アナタに加筆して欲しいわけじゃ無いんだからねっ! まっ、まあ、アナタがどうしてもって言うのなら、ちょっとだけ書かせてあげてもいいけど・・・・・・

W-ZERO3[es]向けに動画なんかを作成しています。
比較的重めなリトバスのムービーをサンプルに色々試行錯誤しながらやっています。

使ったツールや方法などは徐々にまとめていきます。

W-ZERO3に適した動画形式の選択

TCPMPでは以下の動画形式に対応しています。

  • MPEG-4 (.mov, .mp4, .3gp)
  • H264 (.mp4)
  • Windows Media Video (.wmv)
  • ビデオファイル (.avi)
  • DivX圧縮ビデオファイル (.avi)
  • MPEG (.mpeg, .mpg)

このうち、ビデオファイルやMPEGデータはファイルサイズの観点からW-ZERO3での再生は困難と言えます。そうなると、MPEG-4系の圧縮動画形式が候補となりますが、このうちWMVに関しては元々が再生にパワーを要求する形式であるため、貧弱なW-ZERO3のCPUでは快適な再生は困難です。これまでの経験からDivX圧縮の動画はそれなりに快適に再生できることが分かっているため、今回はDivX及びH.264圧縮による動画を対象とします。

また、今回重点を置いているのは単に再生出来るという点ではなく、許容範囲の画質で出来る限り高い解像度での高フレームレート(30/24fps)の再生という点です。

中間報告

TCPMPベンチマークについて

一部を除いてTCPMP上で動画再生のベンチマークを行っています。TCPMPの動画再生ベンチマークでは、ドロップフレームなしで再生を行い、動画長/再生時間で結果を出力します。
TCPMPのベンチマークで100%となっていればコマ落ち無しで再生出来るように見えますが、実際には動きが多い部分には処理が重くなり、少ない部分は処理が軽くなります。ベンチマークの結果はあくまでも全体の平均ですので、実際の再生でコマ落ちが気にならない為にはだいたい110%以上のベンチマーク結果が必要となります。

H264 320x240 30fps (Video iPod向け設定) 384kbps

TCPMPベンチマーク: 66%
重すぎて使い物になりません。

DivX6.6.1 320x240 30fps 600kbps + MP3 128kbps

コマ落ち無しで再生出来ますがブロックノイズが目立つ…

DivX6.6.1 320x240 30fps 800kbps + MP3 128kbps

コマ落ち無しで再生出来ますが画質の荒さが目立つ…

DivX6.6.1 640x480 30fps 1150kbps + MP3 128kbps

TCPMPベンチマーク: 90%
一定間隔毎にコマ落ちが発生してしまう

DivX6.6.1 640x480 30fps 896kbps + MP3 128kbps

TCPMPベンチマーク: 110%
動きが激しい部分でコマ落ちが発生してしまう。520MHzにクロックアップでコマ落ちが許容範囲内になる。

DivX6.6.1 400x320 30fps 800kbps + MP3 128kbps

TCPMPベンチマーク: 110%
コマ落ち無しで再生可能だが画質の荒さが目立つ…

DivX6.6.1 640x480 24fps 800kbps + MP3 128kbps

TCPMPベンチマーク: 110%
コマ落ち無し、画質も許せる範囲。このあたりが限界か。

W-ZERO3

2007/08/29W-ZERO3

W-ZERO3関連の話題のうち役に立ちそうなコンテンツを扱います。
あまり役にたたなさそうなコンテンツは従来通りblog記事として扱います。

2007/02/10(土)W-ZERO3のアプリ

アプリケーションによってはW-ZERO3以外のプラットフォーム向けにビルドされた実行ファイルが含まれています。WindowsCEを扱ったことが無い人にはよくわからないと思われるのでまとめておきます。

プラットフォーム

  • HPC2.0
  • HPC Pro
  • HPC 2000
  • PsPC
  • PPC(PPC2000)
  • PPC2002
  • WM2003(WM2003SE)
  • WM5.0

W-ZERO3はWindows Mobile5.0プラットフォームですので、用意すればこれを利用するのが一番です。が、Windows Mobile 5.0プラットフォームは後方互換性をもっているのでWM2003(WM2003SE), PPC2002, PPC(PPC2000), HPC2000, HPC Pro向けにビルドされたものも(画面配置やなどの問題はありますが)大部分は動作させることが可能です。
基本的に、WM5.0>WM2003(SE)>PPC2002>PPC>HPC2000>HPC Proの順に選択すればいいでしょう。ただし、WM5.0以外のプラットフォームをターゲットとして開発されたアプリの実行にはMFCCExxx.dllが必要になる場合があります。

ターゲットCPU

上記のプラットフォームによる分類の他に、ビルドのターゲットとなるCPUのタイプが別れています。
WinCE向けのターゲットCPUタイプには以下のようなものがあります。

  • MIPS
  • SH-3/SH-4
  • ARM
    • ARMV4I
    • ARMV4T

W-ZERO3にはIntel XScale PXA270が採用されており、CPUのアーキテクチャ的にはARM系に属します。ARM系にはさらに、ARMV4IとARMV4Tに別れている場合があり、ARMV4Iは実行速度は速くなるがファイルサイズが大きくなる、ARMV4Tはファイルサイズは小さいが実行速度は遅くなるという特徴があります。

W-ZERO3の運用ポリシーにもよりますが、ARMV4Iを導入した方が幸せになれると思います。

おとボク on W-ZERO3を動画対応に

2006/11/15W-ZERO3::ソフト

SEVEN.NETを動画対応に

前提条件

TCPMPがインストールされている必要があります
SEVEN.NET上でおとボクが動作する必要があります

手順

TCPMPがインストールされたフォルダにSEVEN.NETに同梱のmovie_yce_tcpmp.dll, movie_yce_tcpmp.exeをコピー

動画の分割

Windows Mobile端末での動画再生では結合された動画ファイルの頭出しがうまくできないようなのでコンバート時に作成されたファイル「all.mpg」を分割します。
私はTMPGEncを利用して以下のように分割しました。

  • オープニングムービー
    • ファイル名: otoboku_op.mpg
    • 分割開始点: 00:00.00
    • 分割終了点: 01:53.16
  • 第1話予告ムービー
    • ファイル名: otoboku_yokoku.mpg
    • 分割開始点: 01.53.16
    • 分割終了点: 02.37.90
  • エンディングムービー
    • ファイル名: otoboku_ed.mpg
    • 分割開始点: 02.37.90
    • 分割終了点: (最後)

otoboku.7ncの設定

動画ファイルの設定をコンバートで作られる「obokoku.7nc」に反映します。
[MOVIE]セクションを以下のように変更します。
ファイル名は吐き出したファイル名に合わせて変更して下さい。

[MOVIE]
engine=\Program Files\Expansion\Multimedia\TCPMP\movie_yce_tcpmp.dll
;#movie_yce_tcpmp.dllのWindows Mobile端末から見たフルパス
extra_module=\Program Files\Expansion\Multimedia\TCPMP\movie_yce_tcpmps.exe
;#movie_yce_tcpmp.exeのWindows Mobile端末から見たフルパス
use_movie=yes

opening=otoboku_op.mpg
opening_start=0.0
opening_end=113.16
opening_file_total=113.16

yokoku=otoboku_yokoku.mpg
yokoku_start=0.0
yokoku_end=44.74
yokoku_file_total=44.74

ending=otoboku_end.mpg
ending_start=0.0
ending_end=128.13
ending_file_total=128.13

ファイルの転送

all.mpgを分割したファイルと差し替えて外部メモリにファイルを転送します。

注意点

私がはまったところとしては、編集する7ncファイルがotoboku.7ncであるということ(seven.net.cfg, default.7ncは編集不要)、また[MOVIE]セクションにて~_start, ~_endは指定されていない場合はファイルの先頭から最後まで再生されるということですが、モジュールのエラーが発生するため、明示的に指定してやる必要があったという点でしょうか。

メモ

用意したムービーファイルがゲーム画面より大きかったり、小さかったりする場合は自動的に縮小/拡大されて再生されます

正しく設定できた場合にはゲーム開始時にオープニングムービー、タイトル画面で一定時間毎に第1話予告ムービーとオープニングムービーが交互に再生されるようになります。

ムービーは再生終了後には自動でゲーム画面に戻りません。アクションボタンを押すことでゲーム画面に戻れます。