CodecがP-Framesを使用すると、av_seek_frameがavcodec_decode_video2を分割します

StackOverflow https://stackoverflow.com/questions/6084921

  •  09-09-2020
  •  | 
  •  

質問

P-Framesでエンコードされたビデオを求める方法を理解しようとしています(例:H.264) - すべてのフレームがキーフレームでエンコードされた動画で符号化されたビデオに求める方法を知っています(例:MJPEGなど)。

タイムスタンプを与えられた、最終的にはそのタイムスタンプのフレームを再生する必要があります。 しかし今のところ、私はタイムスタンプの近くのキーフレームを再生しようとしています。 so、first--

ret = av_seek_frame(pFormatCtx, videoStream, avTime, 0); 
avcodec_flush_buffers(pCodecCtx);
.

それからav_read_frameを含むいくつかの介在コード。それから

ret = avcodec_decode_video2(pCodecCtx, captureFrame, &gotPicture, &packet); 
.

観察:

役に立ちましたか?

解決

この

を置換します
ret = av_seek_frame(pFormatCtx, videoStream, avTime, isPlayingBackward ? AVSEEK_FLAG_BACKWARD : 0); 
avcodec_flush_buffers(pCodecCtx);
.

この

ret = avformat_seek_file(pFormatCtx, videoStream, 0, avTime, avTime, 0); 
.

avformat_seek_fileのドキュメントは次のように言う: "これはまだ建設中の新しいシークAPIの一部です。これはまだ使用しないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top