Как конвертировать caf в mp3 / amr? - PullRequest
1 голос
/ 22 февраля 2012

Есть ли способ конвертировать .caf файлы iphone record в .mp3 или amr файлы? Потому что файл caf нужно загрузить, а серверная часть не может использовать этот формат. Я не знаком с обработкой звука. Вот мой вывод:

  1. У iphone SDK нет прямого API для этого. Мы можем только изменить формат кодирования (AAC, IMA, iLBC, ALAC), см. Демонстрацию ACAudioFileConvert. Но это все еще файл caf, я хочу знать, смогу ли я конвертировать в mp3 этим.

  2. Некоторые парни предлагают использовать "LAME" api . Кто-нибудь успешно использовать его в IOS? Кто-нибудь может поделиться простой демонстрацией? Кто-то сказал, что это может вызвать проблемы с лицензией?

Может кто-нибудь дать мне какой-нибудь совет? Искреннее спасибо !!!

1 Ответ

0 голосов
/ 19 сентября 2012

Все довольно просто: 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);
...