iOS Dev (21) 用 AVPlayer 播放一个本地音频文件
iOS Dev (21) 用 AVPlayer 播放一个本地音频文件
- 作者:CSDN 大锐哥
- 博客:http://blog.csdn.net/prevention
前言
这篇文章与上一篇极其相似,要注意别看错。
步骤
- 第一步:在 Project - TARGETS - Project名 - Build Phases - Link Binary With Libraries,添加 AVFoundation.framework。
- 第二步:创建一个 UIViewController 的子类 PlayerViewController。
- 第三步:在 PlayerViewController 中添加一个属性 AVPlayer。
- 第四步:在 PlayerViewController 的 viewDidLoad 方法中实现最主要的代码。
关键代码
.h
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface PlayViewController: UIViewController
@property (strong, nonatomic) AVPlayer *player;
@end
.m
#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
几个重要的点:
- 必须要用 AVAudioSession,否则木有声音啊。
- 不要把 AVPlayer 当做局部变量(具体说在这个例子中,不要在 viewDidLoad 中定义)。
- 要找好路径,这里用 mainBundle,不要搞错。
源码
http://download.csdn.net/detail/prevention/6817053
-
转载请注明来自:http://blog.csdn.net/prevention
iOS Dev (21) 用 AVPlayer 播放一个本地音频文件的更多相关文章
- iOS Dev (20) 用 AVAudioPlayer 播放一个本地音频文件
iOS Dev (20) 用 AVAudioPlayer 播放一个本地音频文件 作者:CSDN 大锐哥 博客:http://blog.csdn.net/prevention 步骤 第一步:在 Proj ...
- iOS中音频的录制与播放(本地音频文件的播放)
iOS功能开发涉及到音频处理时,最常见的时进行录音,以及音频文件的播放.停止播放等的操作.在开发中还要避免同一个音频文件,或不同音频文件之间的处理,比如说正在播放A音频时,可以停止播放A音频,也可以播 ...
- iOS从零开始学习直播之音频1.播放本地音频文件
现在直播越来越火,俨然已经成为了下一个红海.作为一个资深码农(我只喜欢这样称呼自己,不喜欢别人这样称呼我),我必须赶上时代的潮流,开始研究视频直播.发现视屏直播类的文章上来就讲拉流.推流.采集.美 ...
- Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件
原文 Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件 第21部分:永久保存Wav音频文件 原文地址:http://channel9.msdn.com/Series/Win ...
- S3C2416裸机开发系列19_Fatfs播放录像wav音频文件
S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩 1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...
- Android音频: 怎样使用AudioTrack播放一个WAV格式文件?
翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 因为这是技术文章,所以有些词句使用原文,表达更准 ...
- python打开一个本地目录文件路径
os.path.abspath()os 模块为 python 语言标准库中的 os 模块包含普遍的操作系统功能.主要用于操作本地目录文件.path.abspath()方法用于获取当前路径下的文件. 比 ...
- web页面如何播放amr的音频文件
这个需求由来已久,公司的语音订单很多,每次客服都是从服务器down下语音来听.很不方便..于是我就上网扒拉看有么有什么web播放器能播放amr格式的音频文件,amr百度百科 总之找了很久.,,然后发现 ...
- EasyPlayerPro windows播放器本地音频播放音量控制实现
背景描述 作为一个播放器, 除了能播放视频和声音外,音量控制是绝对不能缺少的功能; 本文在音视频播放的基础上,增加对音量的控制: 实现流程 调用mixerGetDevCaps获取音频输出设备列表; 打 ...
随机推荐
- http://python3-cookbook.readthedocs.io/zh_CN/latest/c14/p01_testing_output_sent_to_stdout.html
http://python3-cookbook.readthedocs.io/zh_CN/latest/c14/p01_testing_output_sent_to_stdout.html draw. ...
- 关于tuple的只读特性
a = (1,3,[5,4,1]) a[2][1] = 2 print(a) 结果是:(1,3,[5,2,1]) 可以看到,在这里tuple的内容被修改了. 原因就是tuple的“只读”属性是指tup ...
- Stripies(POJ 1862 贪心)
Stripies Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14151 Accepted: 6628 Descrip ...
- css3的loadding效果
<!DOCTYPE html> <html> <head> <title>CSS3 loading效果</title> <meta c ...
- 在 .NET Framework 2.0上使用LINQ
附件:System.Linq.dll.7z 此为从System.Core.dll中剥离的Linq,含有System.Linq.Enumerable类所有扩展方法,可以在客户只安装了.Net 2.0的环 ...
- uestc poj2559 秋实大哥去打工
//感觉有必要把这题放博客上待复习 刚刚写解题报告的时候发现自己又不会做这题了 //我不会告诉你这题绝对是命题人抄poj2559 这题使用一个单调递增的栈,栈内存储的元素有两个值,一个高度,一个长度. ...
- FNN模糊神经网络——信息系统客户服务感知评价
案例描述 信息系统是否真正减轻业务人员的日常工作量提高工作效率?如何从提供“被动”服务转变为根据客户感知提供“主动”服务,真正实现电网企业对信息系统服务的有效管理?如何构建一套适合企业的信息系统客户服 ...
- UVA 10129-Play on Words(欧拉通路)
题意:给N个单词,判断是否单词首尾(前一个单词的尾字符与后一个单词的头字符相同)相连能否形成一条链. 解析:找欧拉通路(欧拉回路或是欧拉链路),但这题事先需要并查集一下,判断是否只属于一个集合,如aa ...
- vhd镜像格式及vhd-util工具应用
概述 VHD 是微软虚拟磁盘文件格式,qemu和tapdisk2都能支持VHD镜像格式,不仅提供基本的虚拟机卷功能,还可提供磁盘快照.磁盘扩容等高级功能 vhd-util是个linux下的开源软件,通 ...
- Python 字符串相关操作
# 1 * 重复输出字符串 print('hello'*2) # 2 [] ,[:] 通过索引获取字符串中字符,这里和列表的切片操作是相同的,具体内容见列表 print('helloworld'[2: ...