2012-02-22 6 views
1

iphone 레코드 .caf 파일을 .mp3 또는 amr 파일로 변환하는 방법이 있습니까? caf 파일은 업로드해야하기 때문에 서버 부분에서는이 형식을 사용할 수 없습니다. 오디오 처리에 익숙하지 않습니다. 여기 내 결론은 다음과 같습니다.caf를 mp3/amr로 변환하는 방법?

  1. iphone SDK에는 직접 API가 없습니다. 인코딩 형식 (AAC, IMA, iLBC, ALAC) 만 변경할 수 있습니다 (ACAudioFileConvert 데모 참조). 하지만 여전히 caf 파일이므로 mp3로 변환 할 수 있는지 알고 싶습니다.

  2. 어떤 사람들은 "LAME" api을 사용하도록 제안합니다. 누구든지 iOS에서 성공적으로 사용할 수 있습니까? 누구나 간단한 데모를 공유 할 수 있습니까? 누군가 라이센스 문제가 발생할 수 있다고 말했습니까?

아무도 나에게 조언을 제공 할 수 있습니까? 진심으로 감사드립니다 !!!

답변

0

매우 간단합니다 : int read, write;

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); 
+0

MP3 파일로 변환 중입니다. 그러나 데이터에는 잡음 만 있습니다. – Bharathi