ios 播放安卓上传的amr文件

本文介绍如何在iOS应用中处理从Android设备上传的AMR格式语音文件。通过使用第三方库VoiceConverter将AMR文件转换为WAV格式,并实现不同格式文件的判断与播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安卓上传的语音格式是amr,而AVAudioPlayer并不支持播放amr文件格式。

思路是把amr文件转成wav文件。

NSString *urlStr=[NSString stringWithFormat:@"%@/msp%@",ZJURL,self.shareF.shareInfo.referUris[0]];
        NSURL *url = [[NSURL alloc]initWithString:urlStr];
        NSData * audioData = [NSData dataWithContentsOfURL:url];
        
        //将数据保存到本地指定位置
        NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        filePath = [NSString stringWithFormat:@"%@/%@.amr", docDirPath , self.shareF.shareInfo.idNum];
        
        wavfile=[NSString stringWithFormat:@"%@/%@.wav", docDirPath , self.shareF.shareInfo.idNum];
        
        mp3file=[NSString stringWithFormat:@"%@/%@.mp3", docDirPath , self.shareF.shareInfo.idNum];
        [audioData writeToFile:filePath atomically:YES];
        [audioData writeToFile:mp3file atomically:YES];
//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        [VoiceConverter amrToWav:filePath wavSavePath:wavfile];
//        });

iOS上传的mp3,所以进行判断

 NSFileManager * fileManager=[ NSFileManager defaultManager ];
 
        //播放本地音乐
        float msize= [[fileManager attributesOfItemAtPath:wavfile error:nil] fileSize]/(1024.0*1024.0);
        
        CDLog(@"wav文件大小:%f",msize);
        NSURL *fileURL;
        if (msize>0) {
            CDLog(@"mav文件");
            fileURL=[NSURL fileURLWithPath:wavfile];

        }else{
            CDLog(@"mp3文件");
            fileURL=[NSURL fileURLWithPath:mp3file];

        }
        self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
        [self.player play];
        
        self.player.delegate = self;

这里面需要VoiceConvert第三方库,网上找的会报错,不支持arm64,需要引入这些




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值