【问题标题】:Audio conversion of CAF fileCAF文件的音频转换
【发布时间】:2010-06-28 06:25:07
【问题描述】:

我正在使用 kAudioFormatiLBC 将 iPhone 上的音频录制到 CAF 文件中,录制效果很好。

我希望能够在通过 ruby​​ on rails webservice 上传样本后将其转换为其他格式。

我正在尝试使用 sox 但得到:

sox in.caf out.mp3

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

我得到的与 ffmpeg 类似:

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: iphone ruby-on-rails ffmpeg sox


    【解决方案1】:

    我发现 ffmpeg 可以翻译数据格式为 aac 的 caf 文件。我在 iPhone 上以 22050Hz、1 通道的 AAC 格式捕获语音。服务器端我可以使用 ffmpeg 将其转换为 .wav 格式,然后使用 sox 将其转换为 .mp3。

    下面是在 FreeBSD 下运行 ffmpeg 的配置。

    %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%
    

    并确认输出:

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

    【讨论】:

      【解决方案2】:

      SOX 对用于 CoreAudio 文件处理的 libsndfile 具有可选依赖项。

      如果您使用 brew(1) 在酿造 sox 之前运行 brew install libsndfile。安装 libsndfile 后需要重新构建 sox。

      【讨论】:

        【解决方案3】:

        如果您的服务器运行 OSX,您应该可以使用afconvert。或者,使用不同的编解码器。

        iLBC 上的维基百科文章有一些可能有用的链接。 http://ilbcfreeware.org/software.html 的顶部链接到 RFC 和用于提取参考源代码的 awk 脚本。

        【讨论】:

          【解决方案4】:

          以下命令对我有用

          brew install sox --with-libsndfile
          

          如果你想编码 mp3,你可能还需要

          --with-lame
          

          【讨论】:

            猜你喜欢
            • 2013-09-19
            • 2011-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多