引入下面两个库。lame是个第三方库。
#import
<AVFoundation/AVFoundation.h>
#import "lame.framework/Headers/lame.h"
#pragma mark -
音频转码
/**
* 音频转码,由 PCM 转码为 MP3
*/
- ( void )convertToMP3
{
NSString * mp3FileName = @"sendRecord.mp3" ;
NSString * documentPath = [ NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES ) lastObject ];
NSString *mp3FilePath = [documentPath stringByAppendingPathComponent :mp3FileName];
NSString * audioFilePath = [ NSString stringWithFormat : @"%@/audio.caf" , documentPath];
NSLog ( @"audioPath:%@" , audioFilePath);
@try {
int read, write;
FILE *pcm = fopen ([audioFilePath cStringUsingEncoding : 1 ], "rb" ); //source 被转换的音频文件位置
fseek (pcm, 4 * 1024 , SEEK_CUR ); //skip file header
FILE *mp3 = fopen ([mp3FilePath cStringUsingEncoding : 1 ], "wb" ); //output 输出生成的 Mp3 文件位置
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, 11025.0
* 音频转码,由 PCM 转码为 MP3
*/
- ( void )convertToMP3
{
NSString * mp3FileName = @"sendRecord.mp3" ;
NSString * documentPath = [ NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES ) lastObject ];
NSString *mp3FilePath = [documentPath stringByAppendingPathComponent :mp3FileName];
NSString * audioFilePath = [ NSString stringWithFormat : @"%@/audio.caf" , documentPath];
NSLog ( @"audioPath:%@" , audioFilePath);
@try {
int read, write;
FILE *pcm = fopen ([audioFilePath cStringUsingEncoding : 1 ], "rb" ); //source 被转换的音频文件位置
fseek (pcm, 4 * 1024 , SEEK_CUR ); //skip file header
FILE *mp3 = fopen ([mp3FilePath cStringUsingEncoding : 1 ], "wb" ); //output 输出生成的 Mp3 文件位置
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, 11025.0