我正在编写基于ffmpeg for android的音频解码器,我必须解码aac音频,但由于某种原因它总是返回0字节解码。
看起来我把一切都搞定了。谁能告诉我在我的情况下出了什么问题。我从ffplay.c复制了代码。 avcodec_decode_audio3函数总是返回零的原因是什么?
以下是来自ffplay.c的代码:
AVPacket *pkt_temp = &is->audio_pkt_temp;
AVPacket *pkt = &is->audio_pkt;
AVCodecContext *dec= is->audio_st->codec;
int n, len1, data_size;
double pts;
data_size = sizeof(is->audio_buf1);
len1 = avcodec_decode_audio3(dec, (int16_t *)is->audio_buf1, &data_size, pkt_temp);
if (len1 < 0) {
pkt_temp->size = 0;
break;
}
if (data_size <= 0){
//This block always gets executed.
continue;
}
答案 0 :(得分:0)
我能够解决我的问题,而不是上面的代码。但我完全重写了我的音频代码,它没有任何线程或等待机制。我怀疑问题不在于上面的代码,但它是将数据传递给函数的方式。
答案 1 :(得分:0)
当你这样做时:
data_size = sizeof(is->audio_buf1);
你得到一个指针的大小,而不是is-&gt; audio_buf1指向的缓冲区的大小