Frage

Ich schreibe einen Audio -Decoder basierend auf FFMPEG für Android, wo ich AAC -Audio dekodieren muss, aber aus irgendeinem Grund gibt es immer 0 Bytes dekodiert.

Sieht so aus, als hätte ich alles richtig vorbei. Kann mir jemand sagen, was in meinem Fall schief gelaufen ist? Ich habe Code von ffplay.c kopiert. Was ist der Grund, warum die Funktion avCodec_decode_audio3 immer Null zurückgibt?

Hier ist der Code von 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;
    }
War es hilfreich?

Lösung

Ich kann mein Problem lösen, nicht mit dem obigen Code. Aber ich habe meinen Audiocode komplett neu geschrieben, der keine Threads oder Wartenmechanismus hat. Ich vermute, dass das Problem nicht im obigen Code liegt, aber es ist in der Art und Weise, wie ich die Daten an eine Funktion übergasse.

Andere Tipps

Wenn Sie das tun:

data_size = sizeof(is->audio_buf1);

Sie erhalten die Größe eines Zeigers anstelle der Größe des Puffer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top