iOS 中 AVAudioPlayer(专门用来播放本地音乐)
来源:互联网 发布:p身份证的软件 编辑:程序博客网 时间:2024/05/20 22:39
先来介绍一下AVAudioPlayer:
AVAudioPlayer简介
在任何时间播放声音
播放声音文件或者内存的
循环播放声音
在同一时刻,播放多个声音,一个声音对应一个audio player,精确的 同步
控制相关播放的级别,立体声的位置, 你正在播放的每一个声音的速率
追种一个特别的点在一个声音文件中,前进或者后退到那个点上;
获得你可以使用的播放级别的测量数据
——— 注意:用代理去处理中断(像来电话了)和 去更新用户的界面,当音频播放完之后。
——— 注意:支持的音频格式有:AAC,ALAC,HE-AAC,iLBC,IMA4,MP3.
——— 注意 : 大家要特别注意了, AVAudioPlayer是专门播放本地音乐的,网络音乐是不可以播放的
再看一下他官方给的常用的API
主要API:
初始化:
- (instancetype nullable)initWithContentsOfURL:(NSURL * nonnull)url error:(NSError * nullable * nullable)outError
播放:
- (BOOL)play
暂停:
- (void)pause
停止:
- (void)stop
准备播放音频,返回值标志是否解析成功,是否可以播放。
- (BOOL)prepareToPlay
获取是否正在播放
@property(readonly, getter=isPlaying) BOOL playing
1
设置音频音量,取值为0-1之间
@property float volume
1
获取当前音频的总时长
@property(readonly) NSTimeInterval duration
AVAudioPlayerDelegate(简介)
用它来相应音频中断和音频解码错误,来实现音频的从放
完成播放(这个Delegate是最常用的, 一首音乐播放完成调用此方法来播放下一首, 实现连续播放)
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer * nonnull)playersuccessfully:(BOOL)flag
解码错误:
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer * nonnull)playererror:(NSError * nullable)error
处理中断: (一共四个,IOS9全部弃用)
- (void)audioPlayerBeginInterruption:(AVAudioPlayer * nonnull)player
1
下面来看一下代码的实现:
// ViewController.m// MusicPlayer//// Created by dlios on 15/10/6.// Copyright © 2015年 dlios. All rights reserved.//#import "ViewController.h"//导入系统库#import <AVFoundation/AVFoundation.h>@interface ViewController ()<AVAudioPlayerDelegate>@property (nonatomic, retain)AVAudioPlayer *player;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.view setBackgroundColor:[UIColor whiteColor]]; [self getButtonControl]; [self getPlayer];}#pragma mark - 创建按钮和进度滑条方法- (void)getButtonControl{ //创建播放按钮 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setFrame:CGRectMake(0, 0, 40, 20)]; button.center = CGPointMake(375 / 2, 400); [button setTitle:@"播放" forState:UIControlStateNormal]; [button setTitle:@"暂停" forState:UIControlStateSelected]; [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; /* 声音slider */ //创建slider UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 300, 20)]; slider.center = CGPointMake(375 / 2, 450); /* 最大值 */ [slider setMaximumValue:100.]; /* 最小值 */ [slider setMinimumValue:0.]; /* 显示颜色 */ [slider setMaximumTrackTintColor:[UIColor purpleColor]]; /* 滑动后颜色 */ [slider setMinimumTrackTintColor:[UIColor cyanColor]]; /* 滑动就调用 */ [slider setContinuous:YES]; /* 滑动事件 */ [slider addTarget:self action:@selector(slider:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:slider]; /* 进度slider */ UISlider *schSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 300, 20)]; schSlider.center = CGPointMake(375 / 2, 500); [schSlider setMaximumValue:280.]; [schSlider setMinimumValue:0.]; [schSlider setContinuous:YES]; [schSlider addTarget:self action:@selector(sliderClick:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:schSlider];}#pragma mark - 播放方法- (void)getPlayer{ /* 获取本地文件 */ NSBundle *bundle = [NSBundle mainBundle]; NSString *urlString = [bundle pathForResource:@"李荣浩-模特" ofType:@"mp3"]; /* 初始化url */ NSURL *url = [[NSURL alloc] initFileURLWithPath:urlString]; /* 初始化音频文件 */ self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; /* 加载缓冲 */ [self.player prepareToPlay];}#pragma mark - button 点击方法- (void)click:(UIButton *)button{ if (button.selected == NO) { [self.player play]; button.selected = YES; }else{ button.selected = NO; [self.player pause]; }}#pragma mark - 声音滑动事件方法- (void)slider:(UISlider *)slider{ self.player.volume = slider.value;}#pragma mark - 进度滑动事件- (void)sliderClick:(UISlider *)slider{ self.player.currentTime = slider.value;}#pragma mark - player Dlegate//结束时调用- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{ NSLog(@"结束了");}//解析错误调用- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
0 0
- iOS 中 AVAudioPlayer(专门用来播放本地音乐)
- AVAudioPlayer本地音乐播放
- AVAudioPlayer 播放本地音乐
- 本地音乐播放AVAudioPlayer
- AVAudioPlayer播放本地音乐
- iOS-纯代码编写本地音乐播放器AVAudioPlayer
- iOS 本地音频播放AVAudioPlayer
- AVAudioPlayer播放本地音乐AVPlayer播放网络音乐
- iOS多媒体播放音乐AVAudioPlayer和AVPlayer
- 使用AVAudioPlayer播放音乐
- iOS开发-使用AVAudioPlayer实现音乐播放器
- iOS 基本功能都有的音乐播放器 AVAudioPlayer
- 本地音频播放AVAudioPlayer
- AVAudioPlayer播放本地音频
- iOS获取本地音乐播放
- ios中AVAudioPlayer音频播放器
- 使用AVAudioPlayer播放网络音乐
- 使用AVAudioPlayer播放网络音乐
- 利用静态链表作集合运算(A-B)U(B-A)
- 线程与进程的区别、联系
- 广点通 (iOS完整版)
- 【d3.js教程04】互动第一步
- C++ 统计一个类对象的个数
- iOS 中 AVAudioPlayer(专门用来播放本地音乐)
- hdu5603the soldier of love
- 网站文章阅读数缓存实现
- 标准IO与文件IO
- 学习网站
- Codeforces Round #333 (Div. 2) A. Two Bases (进制转换比较大小)
- 外语-服务-钱-见识
- Git 学习(1)
- remove duplicates from sorted Array