偽トロキャプチャでDSを60fpsで録画したいんです

数ヶ月前にニンテンドーDSの一部のゲームのタイムアタックを録画したいと思って偽トロキャプチャを作成。見事に動作までは行ったが、録画で問題が出てしまった。

可変音ズレ

よくある音ズレには2種類あって、一つ目は音声の開始位置がズレているもの。これは単純に開始位置をずらしてやれば直る。

もう一つは徐々にズレていくもの。これは音声の時間と動画の時間が合わない為に起こるもので、動画のfpsを調整すれば大抵直る。

そして問題なのが自分の場合。音声の最後と動画の最後を合わせると、序盤微妙に音が早く、中盤は音がぴったり、終盤少し音が早くなり、ラストは音がぴったり一致する。

単純にfpsを弄ればどうにかなるものでは無かった。何だこれ…

原因は音か動画か

音声主観で考えると、音が鳴っているにもかかわらずそのシーンになっていないということは、動画のコマが足りないということになる。

動画主観で考えると、そのシーンで鳴るべき音が既になってしまっている場合、それまでのどこかで音が欠損しているということになる。

録画環境は?

動画の録画には偽トロドライバ付属のds2capを使用。約1時間録画して、30フレームほどエラーが出ていたが、全て直前のフレームで補完しているので映像の欠損は今の所少ないと思われる

音声のほうはSound Engineで普通に録音。

そして、動画も音声も別の物理ドライブに保存するように設定した。動画についても、256*192ピクセル(RGB3バイトずつ)を2画面分毎秒60フレームなので、256*192*3*2*60で17694720。毎秒17.28MBなので、HDDへの書き込みは充分に間に合う。

考えられそうな原因と対策

1. ds2pngのバグ

ds2pngはキャプチャしたデータを1フレーム毎にpngファイルに書き出すツール。自分の環境では途中でエラーを吐いて止まってしまったので、ソースコードを見て一部修正していたりする。

もっとソースコードを良く見て、フレームの取りこぼしが無いか確認する。

2. 録音環境の調査

そういえば、録音といっても単にステレオミックスを録音していただけなのを思い出した。ステレオミックスを通すと微妙な変化等があるのかもしれないので、ステレオミックスを通さないで録音。さらに、録音デバイスも変更してみる。

3. USBケーブル周り

ジャンクUSBケーブルで接続しているので1時間録画して30もエラーフレームが出ているのかもしれない。メーカー製対ノイズ仕様で、1.5mぐらいのケーブルに変えてみる。

どうしても無理な場合

諦めて30fpsで録画する。こっちは余裕。

しかし、60fpsで撮れる環境がある以上、60fpsでヌルヌル動く動画を撮りたい。

既に撮った動画は?

SDA投稿用だったが…

一応無音部分を水増し・削除で無理矢理調整すれば見れるようにはなるが、そこまでやるぐらいだったら撮り直すかな。