博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中AVFoundation的简单使用—音乐的播放
阅读量:6440 次
发布时间:2019-06-23

本文共 2365 字,大约阅读时间需要 7 分钟。

hot3.png

#import "ViewController.h"#import 
@interface ViewController ()@property (nonatomic, strong)AVAudioPlayer *player;@property (nonatomic, weak)UILabel *timer;@property (nonatomic, strong)NSTimer *t;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 首先创建一个label用来显示音乐的总时长和当前的时间; UILabel *timer = [[UILabel alloc]initWithFrame:CGRectMake(0, 0,100, 30)]; self.timer = timer; timer.textAlignment = NSTextAlignmentCenter; self.timer.center = self.view.center; [self.view addSubview:timer];// 获取音乐文件的url; NSString *path = [[NSBundle mainBundle]pathForResource:@"Groove Coverage-Runaway" ofType:@"mp3"]; NSURL *url = [NSURL fileURLWithPath:path]; NSError *error = nil;// 创建一个播放对象; AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error]; if (error) { NSLog(@"创建播放对象失败:%@",error); return; }else { self.player = player;// 这一步必须执行,只有各就各位(创建播放对象)、预备(prepareToPlay:准备播放)之后发令枪才会响起(才能够play); [self.player prepareToPlay]; }}//定时自动调用的方法,用于随时设置label显示的播放时间。- (void)setUpTimer { //isPlaying为BOOL属性,播放对象是否正在播放。 if (self.player.isPlaying) {// self.player.currentTime,如果player正在播放此属性为当前的播放时间,也可以设置player的播放偏移(便宜到指定的时间点 开始播放)。// self.player.duration,此属性为player播放音乐的总时长。 self.timer.text = [NSString stringWithFormat:@"%d:%d/%d:%d",(int)self.player.currentTime/60,(int)self.player.currentTime%60,(int)self.player.duration/60,(int)self.player.duration%60]; }else { self.timer.text = @"等待播放"; }}-(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event { if (self.player.isPlaying) { [self.t invalidate];// pause 暂停;还有十个stop的方法,但是现在与pause等效了。 [self.player pause]; }else { NSTimer *t = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(setUpTimer) userInfo:nil repeats:YES]; self.t = t;// play:播放。 [self.player play]; }}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end

当然除了这些还有

volume:设置声音的大小为float值取值范围为0.0-1.0;

enableRate:BOOL是否可已设置音乐的播放速率;

rate:float在enableRate设置为YES时可以设置音乐的播放速率,默认为1,0.5即为半速,2.0即为双倍速。

numberOfLoops:loop即为循环。number是次数。由此可证numberOfLoops即为循环次数。。。

 

转载于:https://my.oschina.net/ruiruiheshui/blog/673036

你可能感兴趣的文章
React prop类型检查与Dom
查看>>
jQuery Ajax
查看>>
朱兰的质量三部曲——《可以量化的管理学》
查看>>
丰田生产方式和TOC工序切换时间的解决
查看>>
Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
查看>>
2017年勒索软件、物联网攻击将继续肆虐
查看>>
用友网络董事长王文京为何出现在乌镇大会中?
查看>>
大学团队打造手语翻译机器人,完整安装下来需要149个小时
查看>>
Wireshark抓包分析/TCP/Http/Https及代理IP的识别
查看>>
不同包下,相同数据结构的两个类进行转换
查看>>
软件安装(linux)
查看>>
TeamPlain for VSTS - Web Access for Team System-TFS 跨平台的客户端
查看>>
面对前车之鉴的AR,现在的VR要做些什么?
查看>>
vscode 换行符\n 变成\r\n
查看>>
一个绘制虚线的非常规函数(常规方法,打印机上绘制不出虚线)
查看>>
获得本机的IP,掩码和网关
查看>>
大数据之 ZooKeeper原理及其在Hadoop和HBase中的应用
查看>>
Delphi中将XML文件数据装入DataSet
查看>>
你刚才在淘宝上买了一件东西
查看>>
发布一个 Linux 下的 C++ 多线程库
查看>>