4

mpeg4 ビデオを avi コンテナーに多重化しています。ビデオ ストリームは ~4fps なので、AVCodecContext time_base1/4 ( formatContext->streams[0]->codec->time_base...) に設定し、各フレームのタイムスタンプを再スケーリングします。これは、元のタイムスタンプがミリ秒単位であるためです。パケットに割り当てた結果の値ptsdts.

この avi を VLC で再生すると、ビデオが滑らかではなく、次のメッセージが繰り返し表示されます。

avcodec エラー: ビデオが 5 秒以上遅れている -> フレームがドロップしている (コンピュータが遅すぎる?)

上記のpts / dtsの計算に何か問題がありますか?

次の表は、タイムスタンプがどのように再スケーリングされるかを示しています (オリジナル -> 再スケーリング)

stream: 0 1329471005111->1
stream: 0 1329471005348->2
stream: 0 1329471005588->3
stream: 0 1329471005828->4
stream: 0 1329471006068->5
stream: 0 1329471006308->6
stream: 0 1329471006551->7
stream: 0 1329471006788->8
stream: 0 1329471007028->9
stream: 0 1329471007268->10
stream: 0 1329471007508->11
stream: 0 1329471007748->12
stream: 0 1329471007988->13
stream: 0 1329471008228->14
stream: 0 1329471008468->15
4

0 に答える 0