2012-02-22 16 views
1

iphoneレコードの.cafファイルを.mp3またはamrファイルに変換する方法はありますか? cafファイルはアップロードする必要があり、サーバー部分はこの形式を使用できません。 私はオーディオ処理に精通していません。ここに私の結論は次のとおりです。cafをmp3/amrに変換する方法?

  1. iphone sdkにはこれを行うための直接的なAPIはありません。エンコード形式(AAC、IMA、iLBC、ALAC)のみを変更できます(ACAudioFileConvertデモを参照)。しかし、それはまだcafファイルです、私はこれでmp3に変換できるかどうかを知りたいです。

  2. 一部の人は、"LAME" apiを使用することをお勧めします。誰もがイオスでそれを使うのに成功していますか?誰も簡単なデモを共有できますか? 誰かがライセンスの問題を引き起こす可能性があると言いましたか?

誰でも私に助言を与えることはできますか? 心から感謝します!

答えて

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

関連する問題