1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| var read = 0 var write = 0 let pcm = fopen(wavPath, "rb") fseek(pcm, 4*1024, SEEK_CUR) let mp3 = fopen(mp3Path, "wb+") let pcmSize = 8192 let mp3Size = 8192 let pcmBuffer = UnsafeMutablePointer<Int16>.allocate(capacity: Int(pcmSize*2)) let mp3Buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: Int(mp3Size))
let lame = lame_init() lame_set_num_channels(lame, 1)
lame_set_in_samplerate(lame, 22050)
lame_set_VBR(lame, vbr_default) lame_init_params(lame) repeat { read = fread(pcmBuffer, 2*MemoryLayout<Int16>.size, pcmSize, pcm) if read == 0 { write = Int(lame_encode_flush(lame, mp3Buffer, Int32(mp3Size))) } else { write = Int(lame_encode_buffer_interleaved(lame, pcmBuffer, Int32(read), mp3Buffer, Int32(mp3Size))) } print("write\(write)") fwrite(mp3Buffer, write, 1, mp3) } while read != 0
lame_close(lame) fclose(mp3) fclose(pcm)
|