【问题标题】:How to convert caf to mp3/amr?如何将 caf 转换为 mp3/amr?
【发布时间】:2012-03-12 10:37:04
【问题描述】:

有没有办法将 iphone 记录的 .caf 文件转换为 .mp3 或 amr 文件?因为caf文件需要上传,服务器部分不能使用这种格式。 我不熟悉音频处理。这是我的结论:

  1. iphone sdk 没有直接的 api 来执行此操作。我们只能更改编码格式(AAC、IMA、iLBC、ALAC),参见 ACAudioFileConvert Demo。不过还是caf文件,想知道这个能不能转成mp3。

  2. 有些人建议使用"LAME" api。有人成功在ios中使用它吗?谁能分享一个简单的演示? 有人说这可能会导致许可证问题?

谁能给我任何建议? 真诚的感谢!!!

【问题讨论】:

    标签: iphone mp3 lame caf


    【解决方案1】:

    这很简单: int 读,写;

    FILE *pcm = fopen("file.caf", "rb");
    FILE *mp3 = fopen("file.mp3", "wb");
    const int PCM_SIZE = 8192;
    const int MP3_SIZE = 8192;
    
    short int pcm_buffer[PCM_SIZE*2];
    unsigned char mp3_buffer[MP3_SIZE];
    
    lame_t lame = lame_init();
    lame_set_in_samplerate(lame, 44100);
    lame_set_VBR(lame, vbr_default);
    lame_init_params(lame);
    
    do {
      read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);
      if (read == 0)
        write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);
      else
        write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
      fwrite(mp3_buffer, write, 1, mp3);
    } while (read != 0);
    
    lame_close(lame);
    fclose(mp3);
    fclose(pcm);
    

    【讨论】:

    • 它正在转换为 mp3 文件.. 但数据只有噪音
    猜你喜欢
    • 2010-10-25
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多