iOS 用 AVPlayer 播放一个本地音频文件
来源:互联网 发布:3大运营商网络制式 编辑:程序博客网 时间:2024/05/22 23:02
iOS 用 AVPlayer 播放一个本地音频文件
步骤
- 第一步:在 Project - TARGETS - Project名 - Build Phases - Link Binary With Libraries,添加 AVFoundation.framework。
- 第二步:创建一个 UIViewController 的子类 PlayerViewController。
- 第三步:在 PlayerViewController 中添加一个属性 AVPlayer。
- 第四步:在 PlayerViewController 的 viewDidLoad 方法中实现最主要的代码。
关键代码
.h
123456789<code>#
import
<uikit uikit.h=
""
>
#
import
@interface
PlayViewController: UIViewController
@property
(strong, nonatomic) AVPlayer *player;
@end
</avfoundation></uikit></code>
.m
12345678910111213141516171819202122232425262728293031323334353637<code>#
import
"PlayerViewController.h"
@interface
PlayerViewController ()
@end
@implementation
PlayerViewController
- (
void
) viewDidLoad
{
[
super
viewDidLoad];
AVAudioSession *session = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:YES error:nil];
NSString *audioPath = [[NSBundle mainBundle] pathForResource:@
"rem"
ofType:@
"wav"
];
NSURl *audioUrl = [NSURL fileURLWithPath:audioPath];
NSError *playerError;
_player = [[AVPlayer alloc] initWithContentsOfURL:audioUrl error:&playerError];
if
(_player === NULL)
{
NSLog(@
"fail to play audio :("
);
return
;
}
[_player setVolume:
1
];
[_player play];
}
- (
void
) didReceiveMemoryWarning
{
[
super
didReceiveMemoryWarning];
}
@end
</code>
几个重要的点:
- 1.必须要用 AVAudioSession,否则木有声音啊。
- 2.不要把 AVPlayer 当做局部变量(具体说在这个例子中,不要在 viewDidLoad 中定义)。
- 3.要找好路径,这里用 mainBundle,不要搞错。
AVAudioSession类由AVFoundation框架引入。每个IOS应用都有一个音频会话。这个会话可以被AVAudioSession类的sharedInstance类方法访问,如下:
在获得一个AVAudioSession类的实例后,你就能通过调用音频会话对象的setCategory:error:实例方法,来从IOS应用可用的不同类别中作出选择。下面列出了可供使用的音频会话类别:
AVAudioSessionCategorySoloAmbient这个类别非常像AVAudioSessionCategoryAmbient类别,除了会停止其他程序的音频回放,比如iPod程序。当设备被设置为静音模式,你的音频回放将会停止。
AVAudioSessionCategoryRecord
这会停止其他应用的声音(比如iPod)并让你的应用也不能初始化音频回放(比如AVAudioPlayer)。在这种模式下,你只能进行录音。使用这个类别,调用AVAudioPlayer的prepareToPlay会返回YES,但是调用play方法将返回NO。主UI界面会照常工作。这时,即使你的设备屏幕被用户锁定了,应用的录音仍会继续。AVAudioSessionCategoryPlayback
这个类别会静止其他应用的音频回放(比如iPod应用的音频回放)。你可以使用AVAudioPlayer的prepareToPlay和play方法,在你的应用中播放声音。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放都会继续。AVAudioSessionCategoryPlayAndRecord
这个类别允许你的应用中同时进行声音的播放和录制。当你的声音录制或播放开始后,其他应用的声音播放将会停止。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放和录制都会继续。AVAudioSessionCategoryAudioProcessing
这个类别用于应用中进行音频处理的情形,而不是音频回放或录制。设置了这种模式,你在应用中就不能播放和录制任何声音。调用AVAPlayer的prepareToPlay和play方法都将返回NO。其他应用的音频回放,比如iPod,也会在此模式下停止。AVAudioSessionCategoryAmbient
这个类别不会停止其他应用的声音,相反,它允许你的音频播放于其他应用的声音之上,比如iPod。你的应用的主UI县城会工作正常。调用AVAPlayer的prepareToPlay和play方法都将返回YES。当用户锁屏时,你的应用将停止所有正在回放的音频。仅当你的应用是唯一播放该音频文件的应用时,静音模式将停止你程序的音频回放。如果正当iPod播放一手歌时,你开始播放音频,将设备设为静音模式并不能停止你的音频回放。
- iOS 用 AVPlayer 播放一个本地音频文件
- iOS Dev (21) 用 AVPlayer 播放一个本地音频文件
- iOS Dev (20) 用 AVAudioPlayer 播放一个本地音频文件
- iOS开发 - 用AVPlayer封装一个播放器
- iOS开发 - 用AVPlayer封装一个视频播放器
- iOS扫描本地音频文件及后台播放
- IOS-播放沙盒目录及本地音频文件
- iOS从零开始学习直播之音频1.播放本地音频文件
- 播放音频文件ios
- ios播放音频文件
- ios播放音频文件
- DirectMusic播放一个音频文件
- iOS 视频播放 MediaPlayer AVPlayer
- iOS 开发:AVPlayer播放视频
- iOS AVPlayer音频播放应用
- iOS视频播放之AVPlayer
- iOS AVPlayer - swift视频播放
- iOS AVPlayer播放器 简介
- jmeter学习 六
- ubuntu14.04 l LTS 修改字体大小以及格式
- C++新手常见低级错误
- JavaScript_节点相关操作
- git设置代理、记住密码
- iOS 用 AVPlayer 播放一个本地音频文件
- iOS开发之NSRunLoop概述
- iOS导航栏返回按钮
- 唯一分解定理+笔记(我的第一篇博客)【喜+1!】
- brainfuck解释器源码(c语言版)
- HttpClient超时设置
- Xcode插件大全
- Android中Appwidget桌面小控件的简单入手方式
- WdatePicker自定义事件