トップページ > 記事閲覧
SeekMovieToGraphやSeekMovieToGraphToFrameについて
名前:いやほい 日時: 2023/09/24 15:34

映像をDX.PlayMovieToGraphにて再生して、 また同じ映像を再生しようとした際に 一瞬映像の最後のフレームが表示されてしまうので DX.SeekMovieToGraphToFrame(movie,0); や DX.SeekMovieToGraph(movie,0); などをかけてみたのですが、どうも適応されるのが DX.PlayMovieToGraphが実行されるときのようで 必ず最後のフレームが表示されてしまいます。 何か対策などありましたらご教授願います。。。
メンテ

Page: 1 |

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 ); }
メンテ

Page: 1 |

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

   クッキー保存