トップページ > 記事閲覧
リプレイデータの動画化について
名前:ゆのみ 日時: 2017/12/05 15:44

お世話になっております。 今回、ゲームのリプレイデータ(自分で定義したスクリプトになっています)からavi形式の動画データの生成をしたいと思っています。 理由は、ゲーム自体がいろいろ描画しすぎてキャフスチャしながらだとガクガクしてしまうからです。 自分で調べた所、Dxlibで描画先のスクリーンを画像として保存し、OpenCVかなにかで動画として出力するのが良いかと思いました。 しかし、音声について少し困っています。 リプレイデータの動画化ということで、音声にもBGMと効果音を重ねる必要があります。 ある音声データに対して他の音声データを特定の位置に重ねることはできますか? 画像でいうMakeScreenのような機能です。 (SndHandle1,SndHandle2,msec);//合成先のサウンドハンドル,合成したいサウンドハンドル,時間(ミリ秒)) また、このデータをwavファイルに保存したいです。 このような機能はDxlibにありますでしょうか? 無い場合、不躾なお願いなのですが、出来れば対応していただきたいなと思うのですが、可能でしょうか?
メンテ

Page: 1 |

Re: リプレイデータの動画化について ( No.1 )
名前:管理人 日時:2017/12/06 00:59

> このような機能はDxlibにありますでしょうか? MakeSoftSound2Ch16Bit44KHz や LoadSoftSound や ReadSoftSoundData や WriteSoftSoundData や SaveSoftSound を使用して サンプル単位でサウンドデータを読み込んだり書き込んだり保存したりするソフトウェアサウンドという機能はありますが、 LoadGraph で読み込んで DrawGraph で書き込み、といったようなお手軽な機能ではありません ( グラフィックス処理で言えば MakeScreen に DrawPixel で1ドットづつ描画する感じでしょうか・・・ ) > 無い場合、不躾なお願いなのですが、出来れば対応していただきたいなと思うのですが、可能でしょうか? 現在別件が立て込んでいるので、実装するとしても数ヶ月先までは無理、というのもありますが その前にこの機能の需要がどのくらいあるのか、という問題もありますので、 数ヶ月先には別の機能の実装を優先したいと考えるかもしれません・・・ ( 1〜2日で実装できる機能でしたらそんなに悩まないのですが、恐らく実装にはそれなりに時間が掛かる機能となりますので・・・ ) > 理由は、ゲーム自体がいろいろ描画しすぎてキャフスチャしながらだとガクガクしてしまうからです。 画像はゆのみさんの考えられた方法で保存し、音声はリプレイ実行している際の音を録音ソフトで録音する というのが直ぐ実行できる方法だと思います( 処理が重くて録音が途切れるということは無いと思いますので・・・ )
メンテ
Re: リプレイデータの動画化について ( No.2 )
名前:ゆのみ 日時:2017/12/06 15:38

管理人様、返信ありがとうございます。 >画像はゆのみさんの考えられた方法で保存し、音声はリプレイ実行している際の音を録音ソフトで録音する というのが直ぐ実行できる方法だと思います( 処理が重くて録音が途切れるということは無いと思いますので・・・ ) これも考えたのですが、自分ではなく他人(プレイしてくれる方々)がリプレイ動画を撮るハードルが上がってしまうため、 今回音声も含めた動画生成に挑戦してみようということになりました。 >MakeSoftSound2Ch16Bit44KHz や LoadSoftSound や ReadSoftSoundData や WriteSoftSoundData や SaveSoftSound を使用して サンプル単位でサウンドデータを読み込んだり書き込んだり保存したりするソフトウェアサウンドという機能はありますが、 次のような認識であっていますでしょうか? @LoadSoftSoundで背景音と効果音を読み込む A背景音と同じ長さのソフトサウンドハンドルをMakeSoftSound(Aとする)で作成する B効果音をReadSoftSoundDataで抜き出し、1サンプルずつAの該当位置と足し合わせて2で割り、WriteSoftSoundDataでAに上書きする C効果音を入れる回数だけBを繰り返す DSaveSoftSoundで保存する (サンプル周波数合わせる必要あり?) (AddOneDataSoftSoundPlayerは再生時だけなので意味なし?) >現在別件が立て込んでいるので、実装するとしても数ヶ月先までは無理、というのもありますが その前にこの機能の需要がどのくらいあるのか、という問題もありますので >数ヶ月先には別の機能の実装を優先したいと考えるかもしれません・・・ 需要は確かに他の方には無いでしょうね... Dxlibで音声編集ソフトを作る人もいないでしょうし。 今回の私のようにリプレイを動画で出力したいという方がどの程度いるのか...
メンテ
Re: リプレイデータの動画化について ( No.3 )
名前:管理人 日時:2017/12/07 01:24

> これも考えたのですが、自分ではなく他人(プレイしてくれる方々)がリプレイ動画を撮るハードルが上がってしまうため、 > 今回音声も含めた動画生成に挑戦してみようということになりました。 なるほど、そうだったのですね > 次のような認識であっていますでしょうか? >  > @LoadSoftSoundで背景音と効果音を読み込む > A背景音と同じ長さのソフトサウンドハンドルをMakeSoftSound(Aとする)で作成する > B効果音をReadSoftSoundDataで抜き出し、1サンプルずつAの該当位置と足し合わせて2で割り、WriteSoftSoundDataでAに上書きする > C効果音を入れる回数だけBを繰り返す > DSaveSoftSoundで保存する ほぼ合っていますが、Bだけ以下のようになります B効果音をReadSoftSoundDataで抜き出し、1サンプルずつAの該当位置と足して合計が 65535より大きい値になった場合は 65535 に、 -65536 より小さい値になった場合は -65536 にして、WriteSoftSoundDataでAに上書きする 音の振幅は、音が重なった場合は単純な足し算になりますので・・・ あと、-65536〜65535 なのは量子化ビット数が 16bit だった場合なので、もし量子化ビット数が 8bit だった場合は 0〜255 となります > (サンプル周波数合わせる必要あり?) > (AddOneDataSoftSoundPlayerは再生時だけなので意味なし?) はい、すべての背景音と効果音のサンプリング周波数と量子化ビット数を合わせる必要があります そうしないと MakeSoftSound で作成するソフトサウンドハンドルのサンプリング周波数と効果音などのサンプリング周波数が異なる場合 MakeSoftSound で作成するソフトサウンドハンドルのサンプリング周波数に変更する処理が必要になるので・・・ ( DrawPixel で DrawExtendGraph のような拡大描画をしなければならないような感じです )
メンテ
Re: リプレイデータの動画化について ( No.4 )
名前:ゆのみ(解決) 日時:2017/12/08 00:04

この方法でうまく出力できました。 ありがとうございました!
メンテ
Re: リプレイデータの動画化について ( No.5 )
名前:管理人(解決) 日時:2017/12/09 00:16

おお、できたのですか!凄いです! 『理論上はできるけど制約が多い( サンプリングレート・量子化ビット数を全ファイルで統一する必要あり、 音量変化を反映するのが面倒、BGMをループ再生していたら対応が面倒など )ので現実的な方法ではないだろうな・・・』と 思っていたのであっさり実現されていて驚きました・・・ (゜o゜;;
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存