iOS - 音乐播放

本地音乐


#import 


@interface ViewController ()

@property (nonatomic, strong) AVAudioPlayer *audioPlayer;


@end

@implementation ViewController

#pragma mark -懒加载
-(AVAudioPlayer *)audioPlayer
{
    if (!_audioPlayer) {

        // 0. 设置后台音频会话
        [self setBackGroundPlay];

        // 1. 获取资源URL
        NSURL *url = [[NSBundle mainBundle]  URLForResource:@"简单爱.mp3" withExtension:nil];

        // 2. 根据资源URL, 创建 AVAudioPlayer 对象
        _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

        // 2.1 设置允许倍速播放
        self.audioPlayer.enableRate = YES;

        // 3. 准备播放
        [_audioPlayer prepareToPlay];

        // 4. 设置代理, 监听播放事件
        _audioPlayer.delegate = self;
    }
    return _audioPlayer;
}

- (void)setBackGroundPlay
{
    // 1. 设置会话模式
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; ;

    // 2. 激活会话
    [[AVAudioSession sharedInstance] setActive:YES error:nil];


}


// 开始播放
- (IBAction)beginPlay {

    [self.audioPlayer play];

}

// 暂停
- (IBAction)pause {

    [self.audioPlayer pause];

}

// 停止
- (IBAction)stop {

    // 停止某个音乐, 并不会重置播放时间, 下次再播放, 会从当前位置开始播放
    [self.audioPlayer stop];


    // 重置当前播放时间
    self.audioPlayer.currentTime = 0;

    // 或者直接清空重新创建
//    self.audioPlayer = nil;
}

// 快进5秒
- (IBAction)fastForward {

    // 系统已经对currentTime, 做了容错处理, 不用担心时间为负数或者大于音乐总时长
    self.audioPlayer.currentTime += 5;

}

// 快退5秒
- (IBAction)rewind {

    self.audioPlayer.currentTime -= 5;
}

// 2倍速播放
- (IBAction)doubleRate {

    // 1.0 为正常
    // 设置允许调整播放速率, 注意, 此方法必须设置在准备播放之前(经测试, 在播放前也可以)
//    self.audioPlayer.enableRate = YES;
    self.audioPlayer.rate = 2.0;

}

// 音量调节
- (IBAction)volumeChange:(UISlider *)sender {

    // 0.0 --- 1.0
    self.audioPlayer.volume = sender.value;

}


#pragma mark - 播放器代理
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    NSLog(@"播放完成");
}

远程音乐

其他方法参考本地音乐

//  通过一个播放项进行创建, 如果想要更换歌曲, 直接更换播放项就可以, 不需要重新创建
- (void)fangan2
{
     NSURL *remoteURL = [NSURL URLWithString:@"http://music.163.com/song/media/outer/url?id=25906124.mp3"];

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:remoteURL];

    self.player = [[AVPlayer alloc] initWithPlayerItem:playerItem];

    [self.player play];
    // 可以通过这个方法, 直接替换URL
//    self.player replaceCurrentItemWithPlayerItem:<#(nullable AVPlayerItem *)#>

}

你可能感兴趣的:(iOS - 音乐播放)