2

我正在使用 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++;
  }
}

但我收到了几个帧的烦人警告“队列输入及时落后!”

4

1 回答 1

2

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

应该如下:

frames[n]
i = 0 ;
while (there are frames)
{ 
  cur_frame =  frames[i];
  av_encode_audio(frame, ...., &frame_finished);
  i++;
}
于 2014-02-28T06:18:26.610 回答