Re: SeekMovieToGraphやSeekMovieToGraphToFrameについて ( No.1 ) |
- 名前:管理人 日時:2023/09/25 01:38
了解しました
動画ファイルの形式によって対策できない場合もあるかもしれませんので、
使用されている動画ファイルの形式を教えて頂けないでしょうか? m(_ _)m
|
Re: SeekMovieToGraphやSeekMovieToGraphToFrameについて ( No.2 ) |
- 名前:いやほい 日時:2023/09/25 12:55
透過ありのaviや
mp4などをメインに使用しております。
|
Re: SeekMovieToGraphやSeekMovieToGraphToFrameについて ( No.3 ) |
- 名前:管理人 日時:2023/09/26 02:27
ご返答ありがとうございます
実装について失念していることが多かったのでプログラムを確認してみたのですが、
動画の再生は別スレッドで非同期で行われているため、PlayMovieToGraph を実行しても画像は直ぐには更新されず、
別スレッドで行われている動画再生処理が進み、動画の先頭フレームのデコードが完了した後に実行された DrawGraph で
漸く描画される画像が動画の先頭フレームの画像に更新されるので、それまでは最後のフレームの画像が描画されてしまうことになっています
以下のように動画の画像が更新されるまでループする処理を加えることで最後のフレームが表示される
現象を抑えることができると思いますので、よろしければお試しください m(_ _)m
// 動画の画像が最後に更新された時間を取得
int RefreshTime = GetLastUpdateTimeMovieToGraph( movie );
// 動画の再生開始
PlayMovieToGraph( movie, DX_PLAYTYPE_BACK );
// 動画の画像が更新されるまでループ
while( ProcessMessage() == 0 && GetLastUpdateTimeMovieToGraph( movie ) == RefreshTime )
{
// 動画の更新処理
UpdateMovieToGraph( movie );
// 別タスクにCPUの処理を渡す処理
SleepThread( 0 );
}
|