2 Stimmen

Ist es möglich, einen MMS+WMA2-Stream mit Hilfe von Audioeinheiten auf dem iPhone zu dekodieren?

Ich bin nicht sicher, ob Audiogeräte als Codecs in einem Streaming-Audio-Szenario auf dem iPhone funktionieren können.

Ich habe an verschiedenen Stellen gelesen, dass dies möglich ist, aber ich habe keine Beispiele oder eine entsprechende Dokumentation dazu gesehen. Stattdessen finde ich, dass die meisten der Anwendungen veröffentlicht haben ffmpeg und libmms verwendet.

Ich bin für jede Hilfe dankbar, die Sie mir geben können.

5voto

Kemal Taskin Punkte 471

Audio Units sind sehr niedrigschwellig und nützlich, wenn Sie einige schwere Audio-Verarbeitung wie Echtzeit-Audio-Effekte tun wollen. Soweit ich weiß, unterstützt Audio Units nicht den wma-Audio-Codec. Sie müssen die FFmpeg-Bibliothek für diese zu verwenden.

Da FFmpeg auch mms unterstützt, ist es nicht notwendig, eine andere Bibliothek wie libmms zu verwenden, um sich mit mms-Audiostreams zu verbinden. Sie können sich mit FFmpeg wie folgt mit mms-Audiostreams verbinden:

const char *url = "mmst://somemmsurlhere.com";
avformat_open_input(formatCtx, url, NULL, NULL);

Zur Dekodierung der Audiodaten können Sie die avcodec_decode_audio3 Funktion. Sobald Sie die dekodierten Audiodaten bereit haben, empfehle ich Ihnen, das AudioQueue-Framework für die Wiedergabe zu verwenden. AudioQueue funktioniert durch den Aufruf von Callback-Funktionen, die Sie definiert haben, um Sie nach Audiodaten zu fragen. Eine dieser Callback-Funktionen ist die AudioQueueOutputCallback, an die Sie die dekodierten Audiodaten wie folgt übergeben können:

- (void)handlePlayCallback:(AudioQueueRef) inAudioQueue buffer:(AudioQueueBufferRef) inBuffer {
    // copy decoded audio data to inBuffer->mAudioData
    // and set the size of the copied data like this
    // inBuffer->mAudioDataByteSize = data_written

    if(inBuffer->mAudioDataByteSize > 0) {
        AudioQueueEnqueueBuffer(inAudioQueue, inBuffer, 0, NULL);
    }
}

0voto

Nick Toumpelis Punkte 2708

Nachdem ich mir das noch einmal angesehen habe, scheint es, dass iOS nur eingebaute Audiogeräte zulässt, im Gegensatz zu Mac OS X. Eingebaute Audiogeräte werden im "Audio Unit Hosting Guide for iOS" -> "Using Specific Audio Units" beschrieben, den Sie online finden können aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X