2017-08-14 8 views
1

私はいくつかのビデオ処理にffmpegのC APIを使用しています。私の目的は、特定のフレーム番号のスクリーンショットを抽出することです。私は、ffmpegには、(ビデオストリームの適切な基本単位で表された)所与のタイムスタンプを探すためのav_seek_frame関数があることを理解しています。私は、(AVSEEK_FLAG_BACKWARDフラグを使用して)指定されたフレームの最新のIフレームに移動し、必要なフレームが満たされるまで先読みする必要があると仮定します。そのために、私はav_seek_frame関数にシークタイムスタンプを与える必要があります。私の主な問題は、フレーム番号が与えられた場合、どのように関連するプレゼンテーションタイムスタンプが見つかるのですか?FFMPEGデコードのために与えられたフレーム番号のプレゼンテーションタイムスタンプを見つける方法は?

答えて

0

私の経験では、pkt.ptsはフレームあたりpkt.duration回増加し、フレームレートが一定の場合は一定です。

pkt.durationpkt.ptsを1フレームごとに増やしてください。あなたは増加が一定であることを確認した場合。残りはdurationで除算または掛け算することでpts /フレーム番号を計算するのは簡単です。

希望に役立ちます。

関連する問題