【问题标题】:ffmpeg - avcodec_decode_audio3 always returns 0 with aac decoding on androidffmpeg - avcodec_decode_audio3 总是返回 0,在 android 上使用 aac 解码
【发布时间】:2011-07-18 10:20:45
【问题描述】:

我正在为 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;
    }

【问题讨论】:

    标签: android ffmpeg aac libavcodec decoder


    【解决方案1】:

    我能够解决我的问题,而不是使用上面的代码。但是我完全重写了我的音频代码,它没有任何线程或等待机制。我怀疑问题不在于上面的代码,而在于我将数据传递给函数的方式。

    【讨论】:

      【解决方案2】:

      当你这样做时:

      data_size = sizeof(is->audio_buf1);
      

      你得到的是指针的大小,而不是 is->audio_buf1 指向的缓冲区的大小

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-20
        • 2013-12-21
        • 2023-02-16
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多