【转】AVAudioPlayer播放音乐,最清晰明了
在xcode中手动添加frameWork。
#import "MusicViewController.h"
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
@implementation MusicViewController
@synthesize start;
@synthesize pause;
@synthesize restart;
@synthesize BT1;
@synthesize player;
-(IBAction)tostart:(id)sender{
[player play]; //播放
AudioSessionSetActive (true);
}
-(IBAction )topause:(id)sender{
[self.player pause];
AudioSessionSetActive (false);//要引入tool包才行,不然报错
}
- (void)dealloc
{
[BT1 release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
NSString * musicFilePath = [[NSBundle mainBundle] pathForResource:@"audio" ofType:@"mp3"]; //创建音乐文件路径
NSURL * musicURL= [[NSURL alloc] initFileURLWithPath:musicFilePath];
AVAudioPlayer * thePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
//创建播放器
self.player = thePlayer; //赋值给自己定义的类变量
[musicURL release];
[thePlayer release];
[player setVolume:1]; //设置音量大小0-1之间
player.numberOfLoops = -1;//设置音乐播放次数 -1为一直循环
[super viewDidLoad];
}
- (void)viewDidUnload //内存警告时才会释放,当前的viewController即使出现内存警告,也不会unload
{
[self setBT1:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
------------------------------------------------------------------
运行出来效果(这个就是你在IB里面以绑定事件就行)
PS:这里有几个问题需要说明以下
1. 这个[player play] 和【player pause】 时AVAudioPlayer自带的方法,默认情况下你暂停后,再play他会接着你刚才那个继续放,原因时这个play再这个view没有被dealloc之前 ,对象一直没有被销毁。
2.使用slider 当音控调教装置
代码很简单
-(IBAction) volumeChange:(id) sender{
self.player.volume = volumebar.value;
}
/
iPhone应用轻松使用AVAudioPlayer音频播放是本文要介绍的内容,iPhone SDK中的AVFoundation框架包括的AVAudioPlayer是一个容易使用而且功能强大,基于Object-c的播放音频文件播放器 。本教程展示了怎样使用AVAudioPlayer 。本教程将建立一个简单的程序,它能够循环播放一段mp3音频文件 。
源代码/Guithub
教程的源代码在GitHub上 。你可以从仓库中克隆或直接下载zip文件 。
创建项目
- Launch Xcode and create a new View-Based iPhone application called AudioPlayer:
启动Xcode并创建一个“View-Based iPhone application”项目,取名为AudioPlayer:
1.从Xcode菜单选择“File > New Project …”
2.从“iPhone OS > Application”部分选择“View-based Application”,然后按“Choose…”
3.将项目命名为“AudioPlayer”并按“Save”
添加AVFoundation框架
为使用SDK的AVAudioPlayer类,我们需要将AVFoundation框架加入项目:
1.在项目的“Groups & Files”面板上,展开“Targets”
2.Control+点击或右击AudioPlayer
3.选择“Add > Existing Frameworks…”
4.点击Linked Libraries下左下方的+按钮
5.选择“AVFoundation Framework“并按Add
6.“AVFoundation framewoks”将出现在“Linked Libraries”下,关闭窗口
下面,我们将引入AVFoundation的头文件
1.展开项目“Group & Files”面板下AudioPlayer项目
2.打开Classes文件夹
3.选取AudioPlayerViewController.h进行编辑
4.更改文件 。更改以下粗体字部分:
- #import <UIKit/UIKit.h>
- #import <AVFoundation/AVFoundation.h>
- @interface AudioPlayerViewController : UIViewController
- {
- AVAudioPlayer *audioPlayer;
- }
- @end
添加音频文件
我们需要一段音频文件来进行播放 。文件为audiofie.mp3 。我们将其加入项目中:
按Control再左击或右击项目的“Group & Files”面板中的“Resources”文件夹
从上下文菜单中选取“Add > Existing Files…”
找到并选择要导入的音频文件,按“Add”
(有必要的话)选定“Copy items into destination group’s folder”方框并按“Add”
开始播放音频
我们在ViewDidLoad中启动音频播放:
1.解除ViewDidLoad方法的注解
2.更改如下,见粗体部分:
- - (void)viewDidLoad
- [super viewDidLoad];
- NSURL *url = [NSURL fileURLWithPath:[NSString
- stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]];
- NSError *error;
- audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
- audioPlayer.numberOfLoops = -1;
- if (audioPlayer == nil)
- NSLog([error description]);
- else
- [audioPlayer play];
AVAudioPlayer是通过URL初始化的,所以我们首先要创立一个指向资源文件夹中音频文件的URL 。将音频播放器的numberOfLoops属性设为负数使得播放无限循环 。配置好音频播放器后,我们向播放器对象发送播放消息来启动播放 。
记住在dealloc方法中释放audioPlayer 。改变见粗体部分:
- - (void)dealloc
- [audioPlayer release];
- [super dealloc];
- }
更多功能
你可以调节播放器音量,查看/设定播放的时间,暂停或停止播放:
- audioPlayer.volume = 0.5; // 0.0 - no volume; 1.0 full volume
- NSLog(@"%f seconds played so far", audioPlayer.currentTime);
- audioPlayer.currentTime = 10; // jump to the 10 second mark
- [audioPlayer pause];
- [audioPlayer stop]; // Does not reset currentTime; sending play resumes
最后,你还可以实现AVAudioPlayer Delegate协议,比如说,在音频播放结束时得到通知,这样你有可能移动到播放列表的下一首歌 。
然后自己把事件一绑定就行
/
另一篇更详细的文章,见:http://www.oschina.net/question/213217_40638
【转】AVAudioPlayer播放音乐,最清晰明了相关推荐
- iOS8 用AVAudioPlayer播放音乐(Swift)
AVAudioPlayer 类提供了播放音频文件的功能,在本次教程中,我们将对一个音乐文件进行播放暂停和停止操作,此外还会显示标题和播放时间.本次教程使用iOS8和Xcod6.3.1 打开Xcode创 ...
- 音乐平台项目的几个问题总结(头像裁剪以及跨页面播放音乐)
关于头像裁剪 1.上传图片的裁剪,并没有采用后端裁剪,而采用前端裁剪,基于cropbox进行了修改 编码使用一个隐藏的input框存放 存放到数据库 2.本来想在后端解析base64编码重新生成文件, ...
- mciSendString函数简介(播放音乐以及录音相关操作)
函数功能:播放多媒体音乐,视频等 mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等.这个函数有自己的mci指令,可以通过不同的指令实现不同的功 ...
- IOS 后台运行 播放音乐
iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,Av ...
- IOS 后台执行 播放音乐
iOS 4開始引入的multitask.我们能够实现像ipod程序那样在后台播放音频了. 假设音频操作是用苹果官方的AVFoundation.framework实现.像用AvAudioPlayer.A ...
- iOS播放音乐与播放系统声音
相同点: 都可以播放声音 不同点: 播放系统声音: 时间较短,不能暂停或者停止 播放音乐: 可播放时间较长的音乐,歌曲等. 可以暂停,停止. 代码块:播放系统声音 (大体分为四步) #import ...
- 入门C语言第三话:数组之实战篇——扫雷(进阶版——图形化界面,递归展开,播放音乐与音效,标记取消雷,记录雷的个数,鼠标点击,文末附有完整代码)
文章目录 前言 每日鸡汤 基本思路 衔接基础班扫雷 准备阶段 正文 一.雷盘信息的存储 1.设置雷盘11*11与初始化 2.放置雷 3.放置雷周围的信息 二.图形化界面 1.创建与初始化窗口 2.加载 ...
- iPhone开发播放音乐与按钮声音
1.背景音乐播放,支持mp3格式 循环播放长音乐. 这种播放音乐的方式导入框架#import <AVFoundation/AVFoundation.h>: NSString *musicF ...
- iPhone播放音乐
iPhone播放音乐 今天我们简要介绍如何在iPhone中播放音乐: 强烈建议你参考官方文档(需要登录): http://developer.apple.com/library/ios/#docume ...
最新文章
- ARM下的原子操作实现原理
- PTA 1002 Business (35分)
- 非线性回归模型(part3)--K近邻
- 网页中竖的目录怎么改成横的_怎么学习手绘插画?小白也能入门哦
- linux安装mongo卸载mongo,CentOS7安装及卸载MongoDB.md
- Stanford CS230深度学习(七)RNN和LSTM
- 5.2自动扫描及装配数据
- ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记
- 穷人和富人的距离0.05厘米
- GitHub中国区前100名到底是什么样的人
- 为什么投资旅游景区赚钱难?怎样让景区快速盈利?
- 在经历了6个月的学习后,我终于上架了自己的第一款APP---酷课堂iOS群问答精华整理(201807期)
- esp8266 nvs应用
- 小白学react之页面BaseLayout框架及微信的坑
- 缓冲区溢出基础实践(二)——ROP 与 hijack GOT
- 用户界面测试(来源于百度百科)
- IntelliJ IDEA中的神仙插件 写代码必备
- 链路捆绑与端口聚合原理与实验结合理解小白看了都秒懂(华为ensp模拟器)不懂不可能的
- L1-001 ~ L1-005
- mysql8.0.17下载教程_Mysql8.0.17安装教程【推荐】
热门文章
- Spring Cloud第十篇:高可用的服务注册中心
- 最新OCR开源神器来了!
- 风控算法干货交流来了!
- 机器学习项目的备忘清单!
- 机器学习_周志华_问题汇总_第2周
- CVPR 2022|MPViT:用于密集预测的多路径视觉Transformer
- 十年AI谁“最能打”?AI 2000榜单:何恺明最佳论文“刷”状元,谷歌机构排名第一...
- 10个问题看透Transformer
- 一文提升你对深度学习分布式训练的整体认知!
- Transformer, BERT, ALBERT, XLNet全面解析(ALBERT第一作者亲自讲解)