使用AVAudioPlayer播放网络上的音频

本文介绍了如何使用AVAudioPlayer在iOS应用中播放网络上的音频。由于AVAudioPlayer不支持边下载边播放,因此需要先将音频文件存储到本地再进行播放。步骤包括在.m文件中定义AVAudioPlayer对象,创建AudioCache目录,以及实现音频播放功能。

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

注:ios中的AVAudioPlayer不支持变下边播放,所以只能存储到本地进行播放

一、在.m中定义对象

#define AUDIO_PATH @"/AudioCache"

@property (nonatomic,strong)AVAudioPlayer* player;

二、根据路径,创建目录,如果创建失败,则返回

    NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];
    NSString* fullPath = [cachPath stringByAppendingString:AUDIO_PATH];
    NSString* filePath = @"";
    if([self createDirectory:fullPath])
    {
        filePath = [NSString stringWithFormat:@"%@/%@.aud",fullPath,item.id];
    }
    else
    {
        return;
    }


-(BOOL)createDirectory:(NSString*)audioPath
{
    NSFileManager* fileManager = [NSFileManager defaultManager];
    
    BOOL isDirExist = [fileManager fileExistsAtPath:audioPath
                                        isDirectory:nil];
    if(!isDirExist)
    {
        BOOL bCreateDir = [fileManager createDirectoryAtPath:audioPath
                                 withIntermediateDirectories:YES
                                                  attributes:nil
                                                       error:nil];
        
        if(!bCreateDir){
            
            NSLog(@"创建文件夹失败");
            return NO;
            
        }
    }
    return YES;
}



三、将网络音频转化为NSDate,并写入文件

    NSURL* url = [[NSURL alloc] initWithString:item.audUrl];
    NSData* audioData = [NSData dataWithContentsOfURL:url];

    //atomically:YES,表示写成功后(会写入到临时文件中)再覆盖文件,若写入失败,则不会覆盖文件,这样更安全。
    BOOL isSuccess = NO;
    if(![[NSFileManager defaultManager] fileExistsAtPath:filePath])
    {
        isSuccess = [audioData writeToFile:filePath atomically:YES];
    }
    else
    {
        isSuccess = YES;
    }

四、播放音频

    if(!isSuccess){
        NSLog(@"写入失败");
        return;
    }else
    {
        NSLog(@"写入成功");
        //播放本地音乐
        if(!TARGET_IPHONE_SIMULATOR)
        {
            self.player = nil;
            NSError *playerError;
            NSURL* fileURL = [NSURL fileURLWithPath:filePath];
            self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&playerError];
            if(self.player == nil)
            {
                NSLog(@"ERror creating player: %@", [playerError description]);
            }
            else
            {
                [self.player play];
            }
        }
    }

五、停止播放音频

  [self.player stop];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值