iPhone - convertito mp3 a wav?
-
16-09-2019 - |
Domanda
C'è un modo posso convertire un file mp3 in un WAV / AIFF nel mio iPhone app? Ho un mp3 ma voglio combinarlo con altri file e l'unico modo che conosco questo può essere fatto è quando si usano formati PCM.
Qualcuno mi può aiutare qui?
Grazie.
Alcune cose che ho provato
Ho provato ad utilizzare l'AudioConverterFillComplexBuffer () e la sua callback per convertire mp3 al caf, ma i byte per pacchetto e per fotogramma vengono letti come 0. Tutte le idee come posso o se posso usare questa funzione?
Grazie di nuovo.
Soluzione
WAV e AIFF spesso (di solito?) Contengono PCM, quindi qual è l'obiezione lì? O stai dicendo che si deve ottenere i dati MP3 al PCM per mescolare (forse in un apparecchio audio mixer multicanale). Se si vuole seriamente per fare questo, guarda Core Audio, in particolare:
-
Servizi
- file audio (per leggere il formato MP3 e scrivere AIFF o WAV)
- Audio Servizi di conversione di file (per convertire i dati MP3 al PCM, e / o per codificare da PCM a qualche altro codec se si dovesse scrivere un file). Si noti che un dato convertitore non è in grado di convertire tra i due formati codificati; si può fare MP3-to-PCM o PCM-to-AAC, ma per fare MP3-to-AAC, avreste bisogno di due convertitori.
- estesi servizi di file audio, che combinano sia di quanto sopra.
Controlla la ConvertFile esempio nel Core Audio SDK . Questo apre un file di origine per la lettura, descrive il formato desiderato del file di destinazione, legge i buffer da uno e li scrive all'altro. Le mostre di codice sia l'uso separata dei servizi di file di servizi + conversione e il comodo utilizzo di ExtAudioFiles.
Inoltre, essere sicuri di capire la differenza tra i codec e formati di file, e ciò che il codec / combinazioni di formati sono legali. Mi ha sorpreso la prima volta ho scoperto che PCM deve essere little-endian in un WAV, big-endian in AIFF.
Altri suggerimenti
Probabilmente si può fare questo con il giusto insieme di unità Core Audio, ma probabilmente usare un sacco di CPU. Si dovrebbe convertire i dati prima del tempo (forse al momento della compilazione?), Se è possibile.