2

各フレームを取得してビデオファイルをデコードするwhileループがあるので、次のようになります。

while (get_frame(codec_ctx, format_ctx, video_stream, frame) != 0) {
      ...
 }

これで、フレームが取得されたら、将来の特定の時点で(フレームのタイムスタンプに従って)画面に描画する必要があります。これをどのように実装できますか?特定の時間に実行されるコールバックを設定できる方法はありますか?

4

2 に答える 2

1

(フレーム、時間)ペアをキューにプッシュしてから、別のスレッドに次のアルゴリズムを実行させることができます。

loop {
    time, frame = pop(queue);
    wait_until(time);
    display(frame);
}

アイテムがpop空の場合、アイテムがキューにプッシュされるのを待ちます。

于 2012-04-12T15:35:38.440 に答える
0

フレームを描画する必要があるまで(または、突かれるようにselect(2)渡されたFDの1つによって示される、何か他のことをする必要があるまで)待機するために使用します。select()

于 2012-04-12T15:34:33.897 に答える