作者:cz小屁孩865 | 来源:互联网 | 2023-09-23 17:01
在iOS4.3之后,AVAudioPlayer不支持播放amr文件格式的音频.尽管AudioServicesPlaySystemSound支持的播放时间少于30秒am
![73b34405fc2a31771e2ae9cc6c6067d3.png](https://img.php1.cn/3cd4a/189d8/978/7dbdf0f38ad53545.jpeg)
在iOS 4.3之后,AVAudioPlayer不支持播放amr文件格式的音频. 尽管AudioServicesPlaySystemSound支持的播放时间少于30秒amr播放器安卓,但只能用作铃声,不能用作音频.
![tooopen_sy_82326131389.jpg](https://img.php1.cn/3cd4a/1eebe/cd5/8343fdbffb0056b5.webp)
为此amr播放器安卓,需要将amr格式转码为wav格式. 需要引入VoiceConvert第三方库,并且需要确认它支持arm64,否则它将报告错误
![09ae8dd2705f57ea16be8bc20412534e.png](https://img.php1.cn/3cd4a/1eebe/cd5/d67981797265d9c7.webp)
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
//把data写入文件中,取名AudioTempFile
[data writeToFile:[NSTemporaryDirectory() stringByAppendingPathComponent:@"AudioTempFile"] atomically:YES];
//将amr格式的数据转成wav
[EMVoiceConverter amrToWav:[NSTemporaryDirectory() stringByAppendingPathComponent:@"AudioTempFile"] wavSavePath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"AudioTempConvertFile"]];
//读取新的wav格式音频文件
NSData* cOnvertData= [NSData dataWithContentsOfFile:[NSTemporaryDirectory() stringByAppendingPathComponent:@"AudioTempConvertFile"]];
//初始化播放器,播放converData
self.player = [[AVAudioPlayer alloc] initWithData:convertData error:nil];
self.player.delegate = self;
[self.player prepareToPlay];
[self.player play];
![17e6cfb279faf6305f28984fbc258932.gif](https://img.php1.cn/3cd4a/1eebe/cd5/21e585a7e21fc7dc.png)
最后附加第三方库VoiceConvert
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-200961-1.html