Domanda

Non sono sicuro se le unità audio possono funzionare come codec in uno scenario di streaming audio su iPhone.

Ho letto in diversi luoghi che si può fare, ma non ho visto alcun esempio o la documentazione adeguata per questo. Invece, ho trovato che la maggior parte delle applicazioni rilasciate hanno utilizzato ffmpeg e libmms.

Apprezzo tutto l'aiuto che potete darli.

È stato utile?

Soluzione 2

Dopo aver guardato di nuovo, sembra che iOS consente solo per built-in unità audio, a differenza di Mac OS X. Built-in unità audio sono descritti in "Audio Unit Hosting Guida per iOS" -> "Utilizzo di Audio Units specifici ", che si possono trovare on-line qui .

Altri suggerimenti

Audio Units sono di livello molto basso e sono utili se si vuole fare un po 'di elaborazione audio pesante come effetti audio in tempo reale. Per quanto ne so Audio Units non supporta il codec audio WMA. Dovrete utilizzare la libreria FFmpeg per questo.

Dal FFmpeg supporta anche la gestione dei materiali non è necessario utilizzare un'altra libreria come libmms per connettersi a MMS flussi audio. È possibile connettersi a MMS flussi audio con FFmpeg in questo modo:

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

Per decodificare i dati audio è possibile utilizzare il la funzione avcodec_decode_audio3. Una volta che hai i dati audio decodificati pronto vi suggerisco di utilizzare il quadro AudioQueue per la riproduzione. AudioQueue funziona chiamando funzioni di callback che avete definito per chiederti per i dati audio. Una di queste funzioni di callback è l'AudioQueueOutputCallback dove si possono passare i dati audio decodificati in questo modo:

- (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);
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top