ffmpeg -avcodec_decode_audio3は、AndroidでAACデコードで常に0を返します
-
27-10-2019 - |
質問
Android用のFFMPEGに基づいてオーディオデコーダーを作成しています。ここでは、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;
}
解決
上記のコードではなく、自分の問題を解決することができます。しかし、スレッドや待機メカニズムのないオーディオコードを完全に書き直しました。問題は上記のコードにはないと思われますが、それはデータを関数に渡す方法です。
他のヒント
あなたがするとき:
data_size = sizeof(is->audio_buf1);
is-> audio_buf1で指されたバッファーのサイズではなく、ポインターのサイズを取得しています
所属していません StackOverflow