Domanda

Sto facendo un'applicazione di riproduzione multimediale che viene dato PCM lineare non compresso (über crudo) l'audio da un decoder di terze parti, ma sto impazzendo, quando si tratta di giocare appena tornato il formato audio più semplici posso immaginare ..

L'applicazione finale otterrà i dati PCM progressivamente man mano che il file di origine flussi da un server, così ho guardato Code Audio inizialmente (dato che posso apparentemente solo dargli byte in movimento), ma che si è rivelato essere mindfudge - soprattutto perché proprio codice di esempio Audio coda di Apple sembra andare fuori in gita magica di OpenGL e incapsulamento inutile ..

Ho finito per usare un AVAudioPlayer durante (non-streaming) prototipazione; Attualmente creare un'intestazione WAVE e aggiungerlo al l'inizio dei dati PCM per arrivare AVAudioPlayer accettarlo (dato che non può prendere PCM grezzo)

Ovviamente questo è inutile per lo streaming (WAVE imposta l'intera lunghezza del file nell'intestazione, quindi i dati non possono essere aggiunti on-the-go) ..

.. in sostanza: c'è un modo per fare solo iPhone OS alcuni byte PCM e farlo giocare li

?
È stato utile?

Soluzione

Si dovrebbe rivedere il codice AudioQueue. Una volta che si striscia via tutto il guff si dovrebbe avere circa 2 pagine di codice più un callback in cui è possibile fornire il PCM grezzo. Questa callback è sincrono anche con il ciclo principale, quindi non hanno nemmeno bisogno di preoccuparsi di blocco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top