蓝懿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 来修改播放进度)
}
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 来修改播放进度)
}
相关文章推荐
- iOS开发的小技巧(断点打印)
- iOS 基础知识
- JS判断客户端是否是iOS或者Android
- ios开发技巧之【1】
- ios9系统图片显示不出来
- iOS开发:NSNotification的使用
- iOS—TableView之Cell的Style属性
- iOS—收起虚拟键盘的各种方法
- iOS深度学习 - Runtime
- iOS 的通知中心简介
- iOS 自动布局小结
- 查看某一个开发者代码修改量的脚本(ios平台可用)
- iOS开发 autoResizingMask使用
- 蜗牛爱课 -- iOS 设计模式之模板模式
- iOS zipzap读取压缩文件
- iOS开发之首次启动的页面设置方法(带导航)
- iOS 生成随机数
- ios推送相关
- iOS 並行編程初步
- iOS 中同一个label设置不同的颜色