トップページ > 記事閲覧
動画再生時のフレームレートの変動について
名前:あいおい? 日時: 2020/02/04 23:48

.NET版、Unicode版を使用しています。 動画のグラフィックハンドルを生成後、動画を再生すると垂直同期を掛けているのにも関わらず、fpsが変動します。 ディスプレイは144Hzで、動画再生時の状態では(描画しない状態で)常に144fpsに張り付いていますが、動画を描画するメソッドを入れると 144〜150fpsあたりをうろつきます(fpsについてはBandicamのFPSカウンターで観ています)。 動画の解像度はFHDで60fpsのH.264でエンコードされたそれなりに負荷のあるファイルですが、 スペック不足でこの問題が起きている場合fpsが下がる傾向にあると思うので、不思議に思いスレッドを建てました。 30fpsの動画ではそこまで変動しないので、動画再生時に垂直同期が上手くいってない? かな……と思いました(勘違いかもしれませんが)。
メンテ

Page: 1 |

Re: 動画再生時のフレームレートの変動について ( No.1 )
名前:管理人 日時:2020/02/05 01:44

BandicamのFPS表示ではFPSが安定しないとのことですが、 FPS表示をDXライブラリ側で行うようにした以下のようなプログラムの場合は、FPSはどうなるでしょうか? ( 正常に動作すれば左上のFPS表示は144Hzの環境でしたら143〜145くらいの範囲になる筈ですが… ) #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int x, add ; LONGLONG Time, NowTime ; LONGLONG Frequency ; int DispFPS ; int FPSCounter ; int MovieHandle ; // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // 解像度を設定 SetGraphMode( 1920, 1080, 32 ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面に変更 SetDrawScreen( DX_SCREEN_BACK ) ; // 動画の読み込み MovieHandle = LoadGraph( "Movie.mp4" ) ; // 動画の再生開始 PlayMovieToGraph( MovieHandle, DX_PLAYTYPE_LOOP ) ; // システムタイマーの1秒間あたりのカウント数を取得しておく Frequency = GetSysPerformanceFrequency() ; // FPS計測用の時間を初期化 Time = GetNowSysPerformanceCount() ; NowTime = GetNowSysPerformanceCount() ; // FPS表示用の変数を初期化 DispFPS = 0 ; FPSCounter = 0 ; // メインループ while( ProcessMessage() == 0 ) { // 画面をクリア ClearDrawScreen() ; // 動画を描画 DrawGraph( 0, 0, MovieHandle, FALSE ) ; // FPSを描画 DrawFormatString( 0, 0, GetColor( 255,255,255 ), "FPS:%d", DispFPS ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; // FPSカウンタをインクリメント FPSCounter++ ; // 現在の時間が前回表示FPSを更新した時間から1秒経過していたら表示FPSを更新する NowTime = GetNowSysPerformanceCount() ; if( NowTime - Time >= Frequency ) { // 表示FPS値を更新 DispFPS = FPSCounter ; // FPSカウンタをリセット FPSCounter = 0 ; // 表示FPSを更新した時間を保存 Time = NowTime ; } } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ
Re: 動画再生時のフレームレートの変動について ( No.2 )
名前:あいおい?(解決) 日時:2020/02/10 01:32

描画される回数で計測してみたところ 144〜145fpsという記録がでて、 FPS計測専用ソフトのfrapsで試してみたところ 144fps〜145fpsという記録になったので、BandicamのFPSカウンターが正確でない(?)ことが分かりました。 ちゃんと垂直同期が取れていそうなので安心しました。 お騒がせしてすいません m(__)m
メンテ

Page: 1 |

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

   クッキー保存