FFMPEG - AVCODEC_DECODE_AUDIO3 всегда возвращает 0 с декодированием AAC на Android

StackOverflow https://stackoverflow.com/questions/5356870

Вопрос

Я пишу аудио декодер на основе FFMPEG для Android, где мне приходится декодировать AAC Audio, но по какой -то причине он всегда возвращает 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