OpenCVSharp で動画再生時のIntervalについて。TrimViewer0.7でカクカクするんですけど・・・と質問をいただき^^;

c#

言い訳しようそうしよう!

■ 速いPCなら…

速いPCなら適当にネットにあるソースのコピペでずれはほぼ出ないと思いますが‥‥
うちで使ってるコードはサムネイルの処理などで結構重いので、、、、
音声同期もしてないのに30fps出せません(笑)

// 1000/30=33ms そもそもほかの処理があるので33msも待っちゃダメ
int interval_ms = (int)(1000 / movie.Fps);

// レスポンスが悪い(環境によってはオーバーヘッドが数十ミリ秒)ので問題山積
await Task.Delay(interval_ms);

なんてやったらどんどん遅く(毎フレーム遅延していく)なりますので、開始時間からのフレームをタイマーを使って計算してフレームの取得しています。
いままで15fpsに制限をしていたわけではありませんが、Skylakeではそのあたりの表示フレーム速度でしたの気づきにくかったわけです^^;

今回フレームのコピーが速くなって、「全体的に重い」から「一部が速くなる」=早くなったり遅くなったり感じます。

表示フレームっていうものが最終目標なので、個々のインターバルで遅延を避ける処理と、表示開始時間からの誤差で調節するのがベストかなと実装してます。
※デバッグ段階ですが…(;^_^A アセアセ・・・

30fpsで表示できる環境も増えたこともあり、30フレームおきにスクロールする下のサムネイルを作成している関係で、その時にカクっとなります。
スクロールエリアの長さにもよりますが、FHDモニタで最大表示した時に、33msですべてを処理できるコードがかけてませんm(__)m

別スレッドにしたりやりたいことはいろいろあるのですが、さぼってやってません(^◇^;
・24fps(映画やアニメ)の動画のフレーム取得がこけている(5フレームおきに参照フレームがおかしくなるバグ)
・音声ストリーム&字幕ストリームの増減で参照フレームがおかしくなりタイムアウトで処理落ちするバグ
など大きいバグの壁の前に挫折している状況です。
一つ躓くと前に進めない挫折組なので、回避できてないうちは多分集中できないかと…

githubにts再生の良い参考例は上がらないかしら~おほほほほ。と丸投げしてますヘ(゚∀゚ヘ)アヒャ
NVDEC使ったら変わるんかな?(?_?)エ?

■ 待ち時間に関していろいろ頑張っている方が多数おられるのでその一例を…
より正確なタイマーを! - C#なんぞ
結構遅れるTask.Delayメソッド 時間待ちにTask.Delayメソッドを使うと、どうも指定した時間より数十ミリ秒長く待っているようです。 (前回のコードでは、AutoResetEvent.WaitOne/ManualResetEve...