Come registrare qualcosa di diverso da PCM lineare su iPhone
-
21-08-2019 - |
Domanda
Sto avendo un momento difficile cercando di registrare qualcosa di diverso da PCM lineare su iPhone :-( I campioni che ho trovato (SDK SpeakHere, Zdziarski e libri di Sadun e quella di trailsinthesand.com) tutti usano PCM lineare, ma mi piacerebbe un formato compresso comunemente usato al posto (senza ima4 o qualunque sia il nome è ...).
Non riesco proprio a capire come modificare il codice di esempio da utilizzare con, ad esempio AAC, MP3 o AMR, invece. Eventuali suggerimenti e consigli su come farlo sono molto apprezzati!
(Btw, non credo che un MP3-encoder né AMR-encoder sono disponibili a causa di problemi di licenza, ma AAC esiste, o ???)
Modifica / Aggiornamento: sono incappato il seguente testo in "Applicazione iPhone Programming Guide" di Apple, 2009-01-06, pagina 137, sezione: registrazione audio:
"Si può registrare l'audio in uno qualsiasi dei formati elencati nella sezione‘preferiti Formati audio in iPhone OS’(pagina 140)", e formati audio come preferito a pagina 140 sono: "Per l'audio compresso quando si gioca un suono alla volta, e quando non è necessario per riprodurre l'audio in contemporanea con l'applicazione iPod, utilizzare il formato AAC confezionato in un file CAF o m4a. "
Così, interpreto che come una chiara indicazione che è davvero, non solo possibile, ma anche preferibile, per registrare l'audio in formato AAC avvolto in un file m4a, che è proprio quello che voglio. Ma ancora, io non sono in grado di raggiungere questo?!
Grazie, / John
Soluzione
Continua a guardare quei documenti. In "Essentials Audio Core", la sezione "Core Audio Plug-in: Unità audio e codec", osserva che:
iPhone OS contiene la registrazione codec elencati nella Tabella 2-5. Come puoi vedere, né registrazione MP3 né AAC è a disposizione. Ciò è dovuto alla elevata CPU sovraccarico, e conseguente batteria di scarico, di questi formati.
Tabella 2-5 elenca diversi formati, ma, come nota il testo non include quelli che stai cercando. Se si desidera che tali formati dovrete portare il proprio codificatore.
Altri suggerimenti
E 'possibile in iPhone 3GS e iPod 2 ° generazione e superiori. Hanno un enconder hardware per AAC. C'è un progetto di esempio di Apple per questo che fa esattamente ciò che si vuole fare:
iPhoneExtAudioFileConvertTest
Un consiglio per l'utilizzo di FAAC convertire da file PCM lineare iPhone-output in formato AAC:
ho scoperto attraverso la sperimentazione che si deve utilizzare il -X
bandierina sulla versione da riga di comando di FAAC (in esecuzione su Mac OS X), che "scambia i byte di ingresso." (Credo che cambia l'endian-ness.)
Quindi, per esempio, se si audio registrato il file linear.pcm
sul vostro iPhone, si potrebbe quindi eseguire:
faac -XP linear.pcm
sul vostro Mac per convertire in file AAC linear.aac
.
Sto indovinando questo significa che potrebbe essere in grado di utilizzare FAAC entro la vostra applicazione per eseguire la conversione, se si voleva, visto che è una libreria C.
Si noti inoltre che, tecnicamente, l'output dei file da parte dei servizi audio di iPhone sono di solito i file CAF, Nucleo Formato Audio, che è una sorta di formato wrapper per un gruppo di possibili codifiche: noreferrer docs di Apple sul CAF . La riga di comando di cui sopra funziona bene per me, anche se caff
inizia con la <=> intestazione.
Hai provato Lame encoder mp3? O codec FAAC / faad AAC? Si possono incorporare nel ffmpeg per codec audio ancora più.
Perché non provare TPAACAudioConverter scritta dal leggendario Michael Tyson?
TPAACAudioConverter è una semplice classe Objective-C che esegue la la conversione di qualsiasi file audio a un m4a AAC codificato, in modo asincrono con un delegato, o converte qualsiasi audio fornita da una classe di origine di dati (Che prevede la registrazione direttamente in AAC).