トップページ > 記事閲覧
PlayMovieでバッファオーバーラン?
名前:was-blue.0793 日時: 2019/11/27 00:11

PlayMovieでムービーを再生しようとすると「バッファオーバーランが発生した」というエラーで落ちることがあります。 Visual Studio側の出力は以下の通りです。 (アドレス) で例外がスローされました (Project1.exe 内): 0xC0000005: 場所 (アドレス) への書き込み中にアクセス違反が発生しました ハンドルされない例外が (アドレス) (Project1.exe) で発生しました: スタック Cookie インストルメンテーション コードは、スタックベースのバッファー オーバーランを検出しました。 ムービーはMotion JPEGでエンコードしたものです。
メンテ

Page: 1 |

Re: PlayMovieでバッファオーバーラン? ( No.1 )
名前:管理人 日時:2019/11/27 01:08

Motion JPEG の再生では各PCにインストールされているコーデックを使用して デコード処理を行うので、DXライブラリのムービー処理と相性が悪いコーデックだと エラーが発生するかもしれません もし高確率でエラーが発生する Motion JPEG の動画ファイルがありましたら、 よろしければご提供いただけないでしょうか? 手元の環境でもエラーが再現すれば、エラーが発生しないように対処できるかもしれませんので… m(_ _;m 尚、安定して再生できる動画ファイルの形式は Windows では mp4, ogv、それ以外の環境では ogv のみとなっています
メンテ
Re: PlayMovieでバッファオーバーラン? ( No.2 )
名前:was-blue.0793 日時:2019/11/27 12:45

PlayMovieを使うプロジェクトではいくつかのムービーがありますが、全てのムービーで同様に一定の確率でバッファオーバーランが発生します。 このうち1つのムービーをGoogleドライブにアップしましたので、このムービーで再現できるか試していただけないでしょうか? なお、全てのムービーはこのムービーと同じ条件でエンコードしています。 drive.google.com/file/d/1geihZEo7JJAgHZX5l8lfSDIsWpAaHCgp/view?usp=sharing 以上、よろしくお願いします。
メンテ
Re: PlayMovieでバッファオーバーラン? ( No.3 )
名前:管理人 日時:2019/11/30 01:06

ご返信が遅くなり申し訳ありません > このうち1つのムービーをGoogleドライブにアップしましたので、このムービーで再現できるか試していただけないでしょうか? はい、試してみました 以下のようなプログラムで10回ほど再生してみましたが、エラーは発生しませんでした #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { ChangeWindowMode( TRUE ) ; SetGraphMode( 1280, 720, 32 ) ; if( DxLib_Init() < 0 ) return -1 ; PlayMovie( "hattrick.avi", 1, DX_MOVIEPLAYTYPE_NORMAL ) ; DxLib_End(); return 0; }
メンテ
Re: PlayMovieでバッファオーバーラン? ( No.4 )
名前:was-blue.0793 日時:2019/12/01 01:48

>>管理人さん 検証ありがとうございます。 発生条件としては、ローカルWindowsデバッガーを使っていると一定確率で"バッファオーバーランした"というエラーが発生するようで、 発行した後(x86、x64内のDebug、Release内にあるexeファイル)のプログラムでは発生しないようです。 詳しい発生条件は検証しきれておらず、当方のプログラムが原因でバッファオーバーランを起こしている可能性も否定できませんが、 お手数をおかけしますが先のプログラムをローカルWindowsデバッガーから起動するとどうなるか検証していただけないでしょうか? すでにローカルWindowsデバッガーから起動しているようでしたら申し訳ございません。 よろしくお願いします。
メンテ
Re: PlayMovieでバッファオーバーラン? ( No.5 )
名前:管理人 日時:2019/12/01 23:40

> お手数をおかけしますが先のプログラムをローカルWindowsデバッガーから起動するとどうなるか検証していただけないでしょうか? > すでにローカルWindowsデバッガーから起動しているようでしたら申し訳ございません。 はい、No.3 のテストは全てローカルWindowsデバッガーから起動しています 本日も 10回ほど試してみましたが、エラーは発生しませんでした > 詳しい発生条件は検証しきれておらず、当方のプログラムが原因でバッファオーバーランを起こしている可能性も否定できませんが、 was-blue.0793さんのプログラムが原因である可能性より、DXライブラリの動画再生処理と、 was-blue.0793さんのPCにインストールされているコーデックとの処理の相性が悪いことが原因である可能性の方が高いと思います
メンテ
Re: PlayMovieでバッファオーバーラン? ( No.6 )
名前:was-blue.0793(解決) 日時:2019/12/02 20:55

>>管理人さん PCに入っているコーデックとDXライブラリの処理の相性が悪いとなると、"バッファオーバーラン"と言われている以上Motion JPEGを使うとコーデックとの組み合わせによっては任意のコードを実行されるかもしれないですね…… 「DXライブラリが原因ではないが、環境依存でエンコード方式によってはバッファオーバーランが起こる危険性がある。Ogg Theora形式が安全性は高い」ということで当方の結論とさせていただきます。 お手数をおかけして申し訳ございませんでした。ご対応ありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存