您的位置:首页 > 移动开发 > IOS开发

蓝懿IOS学习音频播放

2016-02-01 23:57 507 查看
// 准备歌曲数据

NSString *path = [[NSBundle mainBundle] pathForResource:@"Alan Walker - Fade.mp3" ofType:nil];

NSData *musicData = [NSData dataWithContentsOfFile:path];

// 初始化音频播放器(依据 NSData 初始化)

NSError *errorMsg = nil;

self.player = [[AVAudioPlayer alloc] initWithData:musicData error:&errorMsg];

errorMsg == nil ?: NSLog(@"%@", errorMsg);

self.player.meteringEnabled = YES; // 启用电平

self.player.enableRate = YES; // 启用播放变速

self.player.numberOfLoops = -1; // 0只播放一次, -1无限循环, 正数是几播放几次

// NSLog(@"%@", self.player.settings); // 显示音频文件最基础信息

// Timer 更新播放进度条

[NSTimer scheduledTimerWithTimeInterval:.1

target:self

selector:@selector(updateProgressView)

userInfo:nil

;

self.slid.minimumValu repeats:YES];

// 重新设置 Slider 的初值

self.slid.value = 0e = 0;

self.slid.maximumValue = self.player.duration;

}

- (void)updateProgressView {

// progress 的进度范围是 0~1

// 当前播放进度 = 当前播-放时间 ÷ 总时间

// duration 音频总时间

// currentTime 当前的播放时间

self.jindu.progress = self.player.currentTime / self.player.duration;

// 电平

[self.player updateMeters];

[self.pv0 setProgress:([self.player averagePowerForChannel:0] + 160) / 160 animated:YES];

[self.pv1 setProgress:([self.player averagePowerForChannel:1] + 160) / 160 animated:YES];

}

- (IBAction)bofang:(UIButton *)sender {

// 延时播放 (当前设备播放时间 + 延时时间)

// [self.player playAtTime:[self.player currentTime] + 10];

// 一个按钮实现暂停、播放功能

if (self.player.playing) {

[self.player pause];

[sender setImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal];

} else {

[self.player play];

[sender setImage:[UIImage imageNamed:@"2"] forState:UIControlStateNormal];

}

}

- (IBAction)sli:(UISlider *)sender {

// // self.player.volume = sender.value; // 0~1, 1以后等效于增益, 音质下降

// // self.player.rate = sender.value; // 0.5~2, 播放速度系数, 1是默认值(原速度)

// self.player.currentTime = sender.value;

// self.player.rate = 50;

// ---------------------- 功能分区 -----------------------------

// self.player.volume = sender.value; // 音量控制[0,1], 1以后等效于增益, 音质下降, 负的会变最大

// self.player.rate = sender.value; // 播放速度系数(0,+∞], 需要大于0, 0~1是降速、1~+∞是加速.对应着要把slidert的初始化最大值gaiyixia

self.player.currentTime = sender.value; // 当前播放时间 (通过 Slider 来修改播放进度)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: