MP4等の動画ファイルから、VDTファイル(X680x0で使われる動画形式)を作成します。
$ git clone https://github.com/shimanchu/makevdt.git
$ cd makevdt
$ npm i
対象とする動画ファイルの形式は何でも良いですが、画面比率が4:3に近いものが良いでしょう。
ffmpegを使って、1.の動画ファイルをフレームごとの画像ファイル(PNG)に切り出します。
最終的に作成したいVDTファイルのフレームレートに応じて、-rオプションの値を指定します。下記は毎秒12コマの場合の例です。
ffmpeg -i input.mp4 -vcodec png -r 12 image_%04d.png
ffmpegを使って、1.の動画ファイルから音声データをWAVファイル(15.6KHz, モノラル)として抽出します。
ffmpeg -i input.mp4 -vn -ar 15625 -ac 1 -f wav audio.wav
次に、各種フリーソフト等を使って、WAVファイルをX68kのADPCMファイルに変換します。
X68k実機での変換には時間がかかるので、XM6などのエミュレータでMPUをノーウェイトにして実行すると良いでしょう。
pcm3pcmを使う場合(X68kで実行)
pcm3pcm.x audio.wav audio.pcm
PCMCONVを使う場合(X68kで実行)
PCMCONV.X -ir15625 -or0 -if2 -of8 audio.wav audio.pcm
PCMCONVを使う場合(MS-DOS Player for Win32-x64経由でWindowsで実行)
MSDOS PCMCONV.EXE -ir15625 -or0 -if2 -of8 audio.wav audio.pcm
2.で作成した画像ファイル群と、3.で作成したADPCMファイルをmakevdtに入力して、VDTファイルを出力します。
npx ts-node src/makevdt.ts -p image_ -n 1000 -t 5 -a audio.pcm -o output.vdt
各オプションの意味は以下となります。
オプション | 必須 | 意味 |
---|---|---|
-p, --prefix | * | 画像ファイルのプレフィックス |
-n, --file-num | * | 画像ファイルの数 |
-t, --time-scale | * | 何フレームごとに1フレーム再生するか 例:毎秒12コマの場合⇒5 |
-a, --adpcm | * | ADPCMファイル |
-o, --outfile | * | 出力するVDTファイル |
-c, --comment | - | VDTファイルに含めるコメント (default: "") |
--digits | - | 画像ファイルの連番の桁数 (default: 4) |
--adpcm-rate | - | ADPCMレート(0: 無音, 3: 7.8KHz, 4: 15.6KHz) (default: 4) |
--no-resize | - | 画像ファイルをリサイズしない (default: リサイズする) |
- VDTデータの仕様はSivPackのSIV_VDT.TXTを参照しました