我正在使用libav和libfaac将音频编码为aac。
以下是逻辑:

frames[n]
i = 0 ;
while (there are frames)
{
  cur_frame =  frames[i];
  av_encode_audio(frame, ...., &frame_finished);
  if( frame_finished )
  {
     i++;
  }
}

但是我收到了几帧这样的令人讨厌的警告“队列输入的时间倒退了!”

最佳答案

答案很简单,您不应将同一帧再次传递给libfaac,
因此,即使frame_finished不是1,您仍应转到下一帧。

它应该如下所示:

frames[n]
i = 0 ;
while (there are frames)
{
  cur_frame =  frames[i];
  av_encode_audio(frame, ...., &frame_finished);
  i++;
}

关于audio - libfaac:队列输入在时间上向后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22087630/

10-15 22:37