質問

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で指されたバッファーのサイズではなく、ポインターのサイズを取得しています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top