私はこれを探していて、見つけられないようです。私はffmpegを使用して、私が引き出しているRTSPストリームを持っています。私の処分するオブジェクトには、AVPacket、AVFrame、AVCodecContext、およびAVFormatContextが含まれます。フレームを撮った絶対時間を取得したいと思います。 (理想的には、ミリセカンド単位の粒度で、完全には必要ではありませんが)。FFmpeg C++フレームが取得された時から秒単位でタイムスタンプを取得する方法
ffmpegライブラリを使用してこれを行う簡単な方法はありますか?私はav_frame_get_best_effort_timestamp
と同様にcodec_context->time_base
を見ましたが、それはビデオの開始から数秒で答えを出すようですが、ビデオがいつ開始したのか必ずしもわかりません。
で表現されている間
start_time_realtime
は、ミリ秒単位で表現されていることを考慮に入れるには、あなたがストリームからタイムスタンプを取得することができますと仮定します。それはローカルコンピュータの時計とは何の関係もないリモートコンピュータ上のクロックに縛られます。なぜ、最初のビデオフレームが受信された時刻を保存し、抽出したav_frame_get_best_effort_timestampごとにオフセットとして使用しないのはなぜですか? –@Artemy私はビデオが私に与える時間と同期するために私のアプリケーションが必要なので。このストリームをすべて使用する複数のアプリケーションが存在する可能性があり、私のプログラムをそれらのストリームと同期させたいと思います。私が最初のパケットを受け取った時間は、フレームが私のアプリケーションのために撮られた時から30秒遅れ、別のアプリケーションのために10秒遅れることがありました。そして、私のタイミングは20秒遅れです。ストリームからの絶対時間はすべてのアプリケーションからアクセスできますが、 –