IOS-音乐

一、音乐的播放

音乐播放用到一个叫做AVAudioPlayer的类, 能够用于播放本地音频文件

AVAudioPlayer常用方法

加载音乐文件

- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;

- (id)initWithData:(NSData *)data error:(NSError **)outError;

准备播放(缓冲,提高播放的流畅性)

- (BOOL)prepareToPlay;

播放(异步播放)

- (BOOL)play;

暂停

- (void)pause;

停止

- (void)stop;

是否正在播放

@property(readonly, getter=isPlaying) BOOL playing;

时长

@property(readonly) NSTimeInterval duration;

当前的播放位置

@property NSTimeInterval currentTime;

播放次数(-1代表无限循环播放,其他代表播放numberOfLoops+1次)

@property NSInteger numberOfLoops;

音量

@property float volume;

是否允许更改速率

@property BOOL enableRate;

播放速率(1是正常速率,0.5是一般速率,2是双倍速率)

@property float rate;

有多少个声道

@property(readonly) NSUInteger numberOfChannels;

 1 //
 2 //  AVAudioPlayerTool.h
 3 //  IOS_0318_AVAudioPlayer
 4 //
 5 //  Created by ma c on 16/3/18.
 6 //  Copyright © 2016年 博文科技. All rights reserved.
 7 //  播放本地音乐/音效
 8
 9 #import <Foundation/Foundation.h>
10
11 @interface AVAudioPlayerTool : NSObject
12
13 + (BOOL)playerMusic:(NSString *)fileName;
14 + (void)pauseMusic:(NSString *)fileName;
15 + (void)stopMusic:(NSString *)fileName;
16
17 @end
18
19 @interface CustomSoundsID : NSObject
20
21 ///播放音效
22 + (void)playerSound:(NSString *)fileName;
23 ///销魂音效
24 + (void)disposeSound:(NSString *)fileName;
25
26
27 @end
  1 //
  2 //  AVAudioPlayerTool.m
  3 //  IOS_0318_AVAudioPlayer
  4 //
  5 //  Created by ma c on 16/3/18.
  6 //  Copyright © 2016年 博文科技. All rights reserved.
  7 //
  8
  9 #import "AVAudioPlayerTool.h"
 10 #import <AVFoundation/AVFoundation.h>
 11
 12 @implementation AVAudioPlayerTool
 13 ///存放所有音乐文件
 14 static NSMutableDictionary *_musicPlayers;
 15
 16 + (NSMutableDictionary *)musicPlayers
 17 {
 18     if(!_musicPlayers){
 19         _musicPlayers = [NSMutableDictionary dictionary];
 20
 21     }
 22     return _musicPlayers;
 23 }
 24 ///播放音乐
 25 + (BOOL)playerMusic:(NSString *)fileName
 26 {
 27     //判断fileName是否为空
 28     if(!fileName) return NO;
 29
 30     //1.取出对应的播放器
 31     AVAudioPlayer *player = [self musicPlayers][fileName];
 32
 33     //2.如果播放器不存在,就初始化
 34     if (!player) {
 35
 36         NSURL *url = [[NSBundle mainBundle] URLForResource:fileName withExtension:nil];
 37         //判断url是否存在
 38         if (!url)  return NO;
 39         //创建播放器(一个AVAudioPlayer只能播放一个URL)
 40         player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
 41
 42         //缓冲
 43         if (![player prepareToPlay]) return NO;
 44
 45         //存入字典
 46         [self musicPlayers][fileName] = player;
 47
 48     }
 49
 50     //3.播放
 51     if (!player.isPlaying) {
 52         [player play];
 53     }
 54     return YES;
 55 }
 56 ///暂停音乐
 57 + (void)pauseMusic:(NSString *)fileName
 58 {
 59     //判断fileName是否为空
 60     if(!fileName) return;
 61
 62     //1.取出对应的播放器
 63     AVAudioPlayer *player = [self musicPlayers][fileName];
 64
 65     //2.暂停
 66     if (player.isPlaying) {
 67         [player pause];
 68     }
 69
 70 }
 71 ///停止音乐
 72 + (void)stopMusic:(NSString *)fileName
 73 {
 74     //判断fileName是否为空
 75     if(!fileName) return;
 76
 77     //1.取出对应的播放器
 78     AVAudioPlayer *player = [self musicPlayers][fileName];
 79
 80     //2.暂停
 81     [player stop];
 82
 83
 84     //3.将播放器从字典中移除
 85     [[self musicPlayers] removeObjectForKey:fileName];
 86 }
 87
 88
 89 @end
 90
 91
 92 @implementation CustomSoundsID
 93
 94 ///存放所有音效
 95 static NSMutableDictionary *_soundIDs;
 96
 97 + (NSMutableDictionary *)soundIDs
 98 {
 99     if (!_soundIDs) {
100         _soundIDs = [NSMutableDictionary dictionary];
101     }
102     return _soundIDs;
103 }
104
105
106 ///播放音效
107 + (void)playerSound:(NSString *)fileName
108 {
109     if (!fileName)  return;
110
111     //1.取出对应的音效ID
112     SystemSoundID soundID = [[self soundIDs][fileName] unsignedIntValue];
113
114     //2.初始化
115     if (!soundID) {
116         NSURL *url = [[NSBundle mainBundle] URLForResource:fileName withExtension:nil];
117
118         if (!url)  return;
119         AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &soundID);
120
121         //存入字典
122         [self soundIDs][fileName] = @(soundID);
123     }
124     //3.播放
125     AudioServicesPlayAlertSound(soundID);
126 }
127 ///销魂音效
128 + (void)disposeSound:(NSString *)fileName
129 {
130     if (!fileName)  return;
131
132     //1.取出对应的音效ID
133     SystemSoundID soundID = [[self soundIDs][fileName] unsignedIntValue];
134
135     //2.销毁
136     if (soundID) {
137         AudioServicesDisposeSystemSoundID(soundID);
138         [[self soundIDs] removeObjectForKey:fileName];
139     }
140 }
141
142
143
144 @end
时间: 2024-10-10 08:03:16

IOS-音乐的相关文章

一个功能齐全的IOS音乐播放器应用源码

该源码是在ios教程网拿过来的,一个不错的IOS音乐播放器应用源码,这个是我当时进公司时 我用了一晚上写的  图片都是在别的地方扒的,主要是歌词同步,及上一曲,下一曲,功能齐全了 ,大家可以学习一下吧.<ignore_js_op><ignore_js_op><ignore_js_op><ignore_js_op> 详细说明:http://ios.662p.com/thread-1599-1-1.html

iOS音乐播放器相关

iOS音乐播放器框架主要有两大类:AvPlayer.AvaudioPlayer AvPlayer 能播放本地及网络歌曲 AvaudioPlayer 能播放本地歌曲.有相关代理方法(其实也可以播放网络歌曲,只不过该播放器播放网络歌曲是先将歌曲下载下来再进行播放) 下面记录一下相关要用到的方法 1.获取本地歌曲库(ipod路径)歌曲 // 读取本地音乐 MPMediaPropertyPredicate *albumNamePredicate = [MPMediaPropertyPredicate p

iOS音乐播放器(歌词自动滚动)

简单实现基于IOS的音乐播放器,并且带有歌词,随播放自动滚动,实现效果如下: 首先,需要建立一个解析歌词的类ZMPlrc,解析歌词主要就是把时间和对应的歌词分离出来,然后存储到数组中. ZMPlrc.h #import <Foundation/Foundation.h> @interface ZMPlrc : NSObject /** 时间 */ @property (nonatomic,strong)NSMutableArray *timeArray; /** 歌词 */ @property

卡拉OK效果的实现-IOS音乐播放器

自己编写的音乐播放器偶然用到这个模块,发现没有思路,而且上网搜了搜,关于这方面的文章不是很多,没找到满意的结果,然后自己也是想了想,最终实现了这种效果,想通了发现其实很简单. 直接上原理: 第一种: 原理就是创建一个UILabel,设置一下UILabel的lineBreakMode属性为NSLineBreakByClipping(这样的话就是的内容过多的话就会不显示,所以UILabel的宽度设置成0,就会不显示内容,然后用定时器不断更改宽度,内容也就会不断地显示出来,覆盖掉原本的内容,字体颜色要

iOS - 音乐播放器之怎么获取音乐列表

方法一: 这个方法是通过获取到沙盒路径,来得到音乐的路径(使用这个方法需要把音乐放进沙盒) NSFileManager *manager = [NSFileManager defaultManager]; NSString *Documents = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSLog(@"%@",Documents); NSString *LocalStr = 

ios音乐播放小demo 第一次未修改,先传上来

---恢复内容开始--- 第一次写的未修改,先上传了,以后在修改了,简单的实现了功能,代码不好见谅 主要步骤: 1.新建一个歌曲类  歌名,歌手,格式.... 2,播放界面viewcontroller 3,单元格的tableviewcell 4,视图adioviewcontroller 播放界面的代码 1 #import "AdioViewController.h" 2 #import <AVFoundation/AVFoundation.h> 3 4 #import &q

一个IOS音乐播放器源码

此代码是IOS一款播放器代码,自己闲来仿照主流播放器写的,该播放器支持各种格式播放,支持上一曲,下一曲,歌词同步播放,音量调节大小,快进,快退等功能,后续功能我会继续完善.代码仅供学习交流,如有写的不好,望各位海涵...希望对刚刚接触这块的童鞋有所帮助......js_op> 3. [图片] iOS 模拟器屏幕快照“2013-9-18 上午11.06.16”.png    <ignore_js_op> 4. [图片] iOS 模拟器屏幕快照“2013-9-18 上午10.58.17”.p

iOS音乐后台播放及锁屏信息显示

实现音乐的后台播放.以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示 此实例须要真机调试.效果图例如以下: project下载:githubproject下载 实现步骤: 1.首先改动info.plist 2.其次引入两个须要的框架 #import <AVFoundation/AVFoundation.h> #import <MediaPlayer/MediaPlayer.h> 3.设置播放器及后台播放 - (void)viewDidLoad { [super

ios 音乐播放,音乐信息显示方法

下面的博客写的很清楚了 http://msching.github.io/blog/page/2/ 主要涉及AVAudioPlayer和下面这几个函数 MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyAlbumTitle:"aaa"]   UIApplication.sharedApplication().beginReceivingRemoteControlEvents()

iOS中文版资源库,非常全

目录 入门 库和框架 音频 动画 Apple TV 桥接 缓存 Core Data 图表 数据库 硬件 动作 蓝牙 位置 iBeacon HUD 事件总线( EventBus ) 文件 JSON 布局 日志 地图 媒体 图片 视频 PDF 消息 网络 推送通知 Passbook 权限 文本 浏览 / 介绍 / 教程 URL Scheme UI Websocket 代码质量 分析 支付 产品化工具 实用工具 安全 安装项目 依赖 / 包管理 测试 测试驱动开发(TDD) / 行为驱动开发(BDD)