トップページ > 過去ログ > 記事閲覧
動画や音楽再生に関する諸質問
名前:dal 日時: 2008/09/06 18:07

         <質問1> .mpgのファイルを再生させているのですが、 ファイルによっては意味不明な以下のような出力が出てしまいます。 ★その1(たぶんDeleteGraphした時) スレッド 'Win32 スレッド' (0xc48) はコード 0 (0x0) で終了しました。 スレッド 'Win32 スレッド' (0xc40) はコード 0 (0x0) で終了しました。 スレッド 'Win32 スレッド' (0xc44) はコード 0 (0x0) で終了しました。 スレッド 'Win32 スレッド' (0xc3c) はコード 0 (0x0) で終了しました。 スレッド 'Win32 スレッド' (0xc34) はコード 0 (0x0) で終了しました。 ★その2(たぶん動画ファイルを読み込んだ時) game02.exe の 0x7c812aeb で初回の例外が発生しました: Microsoft C++ の例外: int (メモリの場所 0x0a8cfa24)。 スレッド 'Win32 スレッド' (0xc38) はコード 0 (0x0) で終了しました。 TffdshowBase::Constructor TffdshowDecVideo::Constructor TffdshowDecVideoOutputPin::Constructor Join filter graph TffdshowVideoInputPin::ReceiveConnection TffdshowVideoInputPin::CheckMediaType: MPG1, 512, 384 TffdshowVideoInputPin::ReceiveConnection TffdshowVideoInputPin::CheckMediaType: MPG1, 512, 384 Removed from filter graph TffdshowDecVideo::Destructor TffdshowDecVideoOutputPin::Destructor TffdshowBase::Constructor TffdshowDecAudio::Constructor Join filter graph TffdshowDecAudio::CheckConnect (input) TffdshowDecAudio::CheckInputType TffdshowDecAudio::getCodecId TffdshowDecAudio::getCodecId: 44100 Hz, 2 channels TffdshowDecAudio::getCodecId: codecId=0 TffdshowDecAudio::CheckConnect (input) TffdshowDecAudio::CheckInputType TffdshowDecAudio::getCodecId TffdshowDecAudio::getCodecId: 44100 Hz, 2 channels TffdshowDecAudio::getCodecId: codecId=0 TffdshowDecAudio::CheckConnect (input) TffdshowDecAudio::CheckInputType TffdshowDecAudio::getCodecId TffdshowDecAudio::getCodecId: 44100 Hz, 2 channels TffdshowDecAudio::getCodecId: codecId=0 Removed from filter graph ★その3(MovieのHandleをDrawGraphする度に?フレーム毎に?) 'game02.exe': 'C:\Program Files\K-Lite Codec Pack\filters\l3codecx.ax' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。 game02.exe の 0x7c812aeb で初回の例外が発生しました: 0x00000001: ファンクションが間違っています。 game02.exe の 0x7c812aeb で初回の例外が発生しました: 0x00000001: ファンクションが間違っています。 game02.exe の 0x7c812aeb で初回の例外が発生しました: 0x00000001: ファンクションが間違っています。 game02.exe の 0x7c812aeb で初回の例外が発生しました: 0x00000001: ファンクションが間違っています。 game02.exe の 0x7c812aeb で初回の例外が発生しました: 0x00000001: ファンクションが間違っています。 このようなものが出力はされるものの、 問題なく再生はされているようですが、放っておくと 場合によっては(環境によっては)問題になる可能性があれば 直しておきたいのですが、アドバイスをよろしくお願いします。          <質問2> Apart→Bpart1週目→Bpart2週目→フェードアウト という構成のmp3の音楽ファイルを Apart→Bpart1週目→Bpart最初に戻る→ SetLoopPosSoundMemを使って 音楽を「滑らかに」ループさせたいのですが Bpartの終わりを切るタイミングをミリ秒単位で行うのも、 Bpartの始まりの時間をミリ秒単位で指定するのも、 非常に難しく、なかなか滑らかにループできないのですが、 うまいこと編集、指定するにはどうすればよいのでしょうか?          <質問3> ゲーム中で音楽や動画を再生する際、 ゲーム起動後初回は読み込みに時間がかかったりするので、 これを防止するため、ゲーム起動直後のタイトル画面に行く前に 準備運動的に無意味に一度音楽や動画を再生してみたりしてるの ですが、もっとマシな対策方法ってあるのでしょうか?

Page: 1 |

Re: 動画や音楽再生に関する諸質問 ( No.1 )
名前: 日時:2008/09/06 21:17

1-1 スレッドの終了は恐らくDXライブラリが 内部で使用しているスレッドでしょう。 異常でも何でも無く、終了しましたよ、という お知らせです。 1-2 恐らく動画を読み込んだ際の 総合コーデックのクラス内部で 例外が投げられているようですが、 Debug版で出ているだけなら、 ただのログの可能性があります。 1-3 こちらも恐らくコーデックの例外です。 こちらのコーデックにはデバッグ情報が無い為 例外があったことだけが出ている物と思われます。 2-1 「非常に難しく」と有りますが どう難しいのでしょうか? DXライブラリの機能で難しいということなら、 自作したほうが早いかもしれません。 3-1 何をもって「マシ」とするかですね。 読み込み方も使い方も、こうしたほうが 良いというのは個人の思うところなので、 趣旨にあっている実装方法なら、 問題ないのではないでしょうか? #ゲームのジャンルにもよりますが。
Re: 動画や音楽再生に関する諸質問 ( No.2 )
名前:ZAP 日時:2008/09/07 16:13

確かmp3では切れ目のないループは難しかったような記憶があります。 wavかoggでやってみてはどうでしょうか。
Re: 動画や音楽再生に関する諸質問 ( No.3 )
名前:管理人 日時:2008/09/07 23:41

質問1-1 こちらは通さんの仰るとおり問題ありません 質問1-2 質問1-3 こちらはコーデックでエラーが発生している模様です mpgを使用すると実行する環境にインストールされているコーデックに 動作が左右されますので、可能であれば最近再生コードをライブラリ内部に組み込んだ Ogg Theora 形式(拡張子 ogv) をお使いになってみてください m(_ _)m ogv が読み込めるバージョンはこちらです↓ http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 質問2 音楽ファイルはご自分でご用意されたものではないのでしょうか? 恐らく製作された方にはどの時間にBパートが終了するかは 把握されていると思いますが・・・ また、ミリ秒単位では精度が足りない、ということでしたら、バイト単位での 指定ができるこちらの関数 // サウンドハンドルにループ位置を設定する int SetLoopSamplePosSoundMem( int LoopSamplePosition, int SoundHandle ) ; もありますので、宜しければお使いください。 あと、ZAPさんも仰られていますが、mp3ファイルは微妙に再生総時間がオリジナルと 違いがあったりしますので、可能であれば Ogg Vorbis や wav 形式をお使いになってみて下さい。 質問3 OSのディスクキャッシュに載せることで再生開始時間を短縮するということでしたら 現在採られている方法が最適になると思います。 他には起動時に 音楽の場合はストリーミング再生の指定をした上での LoadSoundMem で予めハンドルを取得することで、 動画の場合は Ogg Theora 形式のファイルを LoadGraph で読み込んでおくことで 再生時( PlaySoundMem , PlayMovieToGraph )の待ち時間を短縮することが出来ますが、 こちらはこちらで1ファイル辺り1〜2MBのバッファメモリが必要になるのでメモリは その分大目に必要になります。
Re: 動画や音楽再生に関する諸質問 ( No.4 )
名前:dal 日時:2008/09/13 23:58

とても参考になりました! ありがとうございました。

Page: 1 |