0

私の Python プログラムでは、GStreamerplaybinを と組み合わせて使用​​しtextoverlayて、ビデオ ファイルを再生し、その上にテキストを表示します。これは正常に機能します。textプロパティを変更するとtextoverlay、新しいテキストが表示されます。

しかし、今はビデオの現在の位置/時間に基づいてテキストを設定したいと考えています(字幕など)。

パイプラインのクロック、バッファのタイムスタンプ、セグメント イベント、および x ミリ秒ごとに現在の時刻をクエリする外部タイマーについて読みました。しかし、できるだけ早く正しいテキストを表示できるように、時間の変更について通知を受けるためのベスト プラクティスは何ですか?

4

1 に答える 1

0

ビデオと実際に同期させる最善の方法は、cairooverlay 要素のようなものを使用し、フレームの実際のタイムスタンプに基づいて、パイプライン内で直接レンダリングを行うことです。または、それを行うための独自の要素を作成します。

タイミングが超正確である必要がない場合の最も簡単な解決策は、パイプライン クロックを使用することです。パイプラインが開始されたら、パイプラインから取得して、必要な時間または間隔のシングル ショット (または定期的な) クロック ID を作成できます。そして、クロックで async_wait() メソッドを使用します。

たとえば、パイプラインの 1 秒の位置に対応するクロック タイムを取得するには、パイプラインのベース タイムに 1 秒 (つまり、1000000000) を追加します。その後、クロック ID を作成するときにその値を使用できます。

于 2014-07-17T15:15:20.773 に答える