首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将iphone中录制的声音从一种格式转换为另一种格式,例如wav转换为mp3

将iphone中录制的声音从一种格式转换为另一种格式,例如wav转换为mp3
EN

Stack Overflow用户
提问于 2010-09-21 08:45:21
回答 1查看 2.4K关注 0票数 5

我正在尝试录制一些音频,并将它们转换成其他声音格式。我使用AVAudioRecorder类进行记录,这些是我使用的录音设置。

代码语言:javascript
运行
复制
 NSDictionary *recordSetting = [[NSMutableDictionary alloc] init];
 [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];//kAudioFormatMicrosoftGSM,kAudioFormatLinearPCM
 [recordSetting setValue:[NSNumber numberWithFloat:8000] forKey:AVSampleRateKey]; 
 [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
 [recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
 [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
 [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];

录音效果很好。现在我想把这个声音文件转换成mp3格式。我可以用AudioToolBox框架来完成这个任务吗?我试过这个

代码语言:javascript
运行
复制
 AudioStreamBasicDescription sourceFormat,destinationFormat;
 //Setting up source Format setting..here wav
 sourceFormat.mSampleRate   = 8000.0;
 sourceFormat.mFormatID    = kAudioFormatLinearPCM;
 sourceFormat.mFormatFlags   = kAudioFormatFlagIsSignedInteger ;
 sourceFormat.mBytesPerPacket  = 4;
 sourceFormat.mFramesPerPacket  = 1;
 sourceFormat.mBytesPerFrame   = 4;
 sourceFormat.mChannelsPerFrame  = 2;
 sourceFormat.mBitsPerChannel  = 16;

 destinationFormat.mSampleRate  = 8000.0;
 destinationFormat.mFormatID   = kAudioFormatMPEGLayer3;
 destinationFormat.mFormatFlags  = 0;
 destinationFormat.mBytesPerPacket = 4;
 destinationFormat.mFramesPerPacket = 1;
 destinationFormat.mBytesPerFrame = 4;
 destinationFormat.mChannelsPerFrame = 2;
 destinationFormat.mBitsPerChannel = 16;

 OSStatus returnCode     =     AudioConverterNew(&sourceFormat,&destinationFormat,&converter);
 if (returnCode) {
    NSLog(@"error getting converter : %d",returnCode);
    return;
 }

函数AudioConverterNew()给出了错误kAudioConverterErr_FormatNotSupported ('fmt')。我尝试了不同的mFormatID和mFormatFlag组合。但是,每当操作者(源或目标)之一是mp3时,我就会得到这个错误。现在请帮我回答这些问题。

  1. 我们可以使用AudioToolbox框架和函数在压缩格式和非压缩格式之间转换声音(目前我想在.wav和.mp3之间进行转换)。在AudioConverterNew文档中,他们说“支持线性PCM和压缩格式之间的编码和解码”。但他们并没有具体说明哪种压缩格式。
  2. ,如果问题1的答案是“否”,那么我需要使用什么框架来转换上述格式之间的声音呢?
  3. 与上面的格式无关,但是谁能给我一个链接到关于不同声音格式(wav、mp3、aac等)以及它们的数字表示(cpm、lpcm等)的信息的任何网站,以便我能够理解哪一个使用什么。

EN

回答 1

Stack Overflow用户

发布于 2012-07-02 13:15:48

一些答案

  1. 是的,您可以使用AudioToolbox框架来转换声音,但.mp3格式除外。由于版权问题,mp3无法作为框架内的目标格式。
  2. 如果您想要转换为mp3,您可能需要使用跛脚库:.mp3规范:http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html其他格式,您可以很容易地通过web搜索

找到

希望这有帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3758618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档