2010-06-28 16 views
2

J'enregistre l'audio sur l'iPhone dans un fichier CAF avec kAudioFormatiLBC, l'enregistrement fonctionne correctement. Je veux être en mesure de prendre un échantillon et également l'obtenir pour convertir en d'autres formats après que je l'ai téléchargé sur le webservice ruby ​​sur les rails.Conversion audio du fichier CAF

J'essaie d'utiliser sox mais obtenir:

sox in.caf out.mp3

sox FAIL formats: can't open input file `in.caf': Supported file format but unsupported encoding.

similaires avec ffmpeg je reçois:

Unable to find a suitable output format for 'in.caf'

Toutes les idées?

Merci

Répondre

0

Si votre serveur est en cours d'exécution OSX, vous devriez être en mesure d'utiliser afconvert. Vous pouvez également utiliser un codec différent.

L'article Wikipedia sur iLBC a quelques liens qui pourraient être utiles. Le sommet de http://ilbcfreeware.org/software.html liens vers la RFC et un script awk pour extraire le code source de référence.

3

J'ai trouvé ffmpeg traduira les fichiers caf avec un format de données aac. Je capture la voix sur l'iPhone au format AAC à 22050Hz, 1 canal. Côté serveur, je peux le traduire en format .wav avec ffmpeg et ensuite en .mp3 avec sox.

La figure suivante montre la configuration de ffmpeg sous FreeBSD.

%ffmpeg -i test_aac_22050_1.caf test_pcm_22050_1.wav 
FFmpeg version 0.6.3, Copyright (c) 2000-2010 the FFmpeg developers 
    built on Jul 7 2011 16:16:19 with gcc 4.2.1 20070719 [FreeBSD] 
    configuration: --prefix=/usr/local --mandir=/usr/local/man --enable-shared --enable- gpl --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-x11grab --enable-memalign-hack --cc=cc --extra-cflags=-I/usr/local/include/vorbis -I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-pthread --disable-debug --enable-runtime-cpudetect --disable-sse --disable-mmx --disable-indev=alsa --disable-outdev=alsa --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libdirac --enable-libfaac --enable-nonfree --enable-libfaad --enable-libfaadbin --disable-libgsm --disable-libmp3lame --disable-libopenjpeg --enable-libschroedinger --disable-ffplay --disable-libspeex --enable-libtheora --disable-vaapi --disable-vdpau --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid 
    libavutil  50.15. 1/50.15. 1 
    libavcodec 52.72. 2/52.72. 2 
    libavformat 52.64. 2/52.64. 2 
    libavdevice 52. 2. 0/52. 2. 0 
    libavfilter 1.19. 0/1.19. 0 
    libswscale  0.11. 0/0.11. 0 
    libpostproc 51. 2. 0/51. 2. 0 
Input #0, caf, from 'test_aac_22050_1.caf': 
    Duration: 00:00:09.89, start: 0.000000, bitrate: 44 kb/s 
    Stream #0.0: Audio: aac, 22050 Hz, mono, s16, 30 kb/s 
Output #0, wav, to 'test_pcm_22050_1.wav': 
    Metadata: 
    encoder   : Lavf52.64.2 
    Stream #0.0: Audio: pcm_s16le, 22050 Hz, mono, s16, 352 kb/s 
Stream mapping: 
    Stream #0.0 -> #0.0 
Press [q] to stop encoding 
size=  426kB time=9.89 bitrate= 352.8kbits/s  
video:0kB audio:426kB global headers:0kB muxing overhead 0.010087% 

Et confirmant la sortie:

%file test_pcm_22050_1.wav 
test_pcm_22050_1.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz 
3

SOX a une dépendance en option sur libsndfile pour le traitement des fichiers CoreAudio.

Si vous utilisez l'infusion (1), exécutez brew install libsndfile avant d'effectuer l'infusion. Vous devrez reconstruire le Sox après avoir installé libsndfile.

0

La commande suivante a fonctionné pour moi

brew install sox --with-libsndfile 

si vous voulez encoder mp3, vous pouvez aussi avoir besoin

--with-lame