0

私は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;
    }
4

2 に答える 2

0

上記のコードではなく、問題を解決できます。しかし、スレッドや待機メカニズムを持たないオーディオ コードを完全に書き直しました。問題は上記のコードにあるのではないかと思いますが、データを関数に渡す方法に問題があります。

于 2011-03-22T14:39:47.583 に答える
0

あなたがするとき:

data_size = sizeof(is->audio_buf1);

is->audio_buf1 が指すバッファーのサイズではなく、ポインターのサイズを取得しています

于 2011-10-05T18:55:16.340 に答える