iOS 多媒体(一)音频播放
iOS提供播放音频的方法:
- System Sound Services
- AVAudioPlayer
- MPMusicPlayerController
1 System Sound Services
System Sound Services 方式只适合播放一些很小的提示或警告音频。有一些限制:
- 声音长度不超过30s。
- 不能控制播放进度
- 声音文件必须是PCM或IMA4格式。
- 打包成.caf、.aif或.wav的文件
- 无循环播放和立体声控制
- 调用方法后立即播放声音
/**System Sound Service*/
- (void)systemSound {NSLog(@"systemSound");// 1.获得音效文件的路径NSURL *url = [[NSBundle mainBundle] URLForResource:@"brid.caf" withExtension:nil];// 2.加载音效文件,得到对应的音效ID 只需加载一次SystemSoundID soundID = 0;AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);//添加回调,播放完成后回调complemention 这一步可加可不加。AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, (void *)complemention, NULL);// 3.播放音效AudioServicesPlaySystemSound(soundID);//携带震动功能//AudioServicesPlayAlertSound(soundID);
}
不用的时候可以释放音效资源:
AudioServicesDisposeSystemSoundID(soundID);
2 AVAudioPlayer
<pre name="code" class="objc">- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.NSURL *url = [[NSBundle mainBundle] URLForResource:@"1201111234" withExtension:@".mp3"];_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];//准备播放(缓冲,提高播放的流畅性)[_audioPlayer prepareToPlay];//循环次数[_audioPlayer setNumberOfLoops:1];//时长NSLog(@"audio player duration:%f",[_audioPlayer duration]);//为AudioPlayer设置代理,监听播放事件_audioPlayer.delegate = self;
}
- (IBAction)palyAudioPlayer:(id)sender {if(!_audioPlayer.isPlaying){[_audioPlayer play];}
}
- (IBAction)pauseAudioPlayer:(id)sender {if(_audioPlayer.isPlaying){[_audioPlayer pause];}
}
- (IBAction)stopAudioPlayer:(id)sender {[_audioPlayer stop];
}
//监听播放完
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{NSLog(@"finish playing flag:%d",flag);
}
3 MPMusicPlayerController
- applicationMusicPlayer:该播放器是一种内置播放器,当程序退出后停止播放。
- iPodMusicPlayer:该播放器与iPod播放器内的信息相关,退出后不会停止播放。
使用其播放音乐步骤:
- 创建MPMusicPlayerController对象。(导入#import <MediaPlayer/MediaPlayer.h>)
- 调用MPMusicPlayerController对象的setQueueWithQuery:或setQueueWithItemCollection:方法设置将要播放的音乐队列。
调用MPMusicPlayerController对象的play、pause、stop控制播放。
对于其中的音乐队列,我们首先可以通过MPMediaPickerController选择系统音乐。
MPMediaPickerController继承了ViewController,可以当成视图控制器使用。
使用MPMediaPickerController步骤:
- 实现协议MPMediaPickerControllerDelegate。
- 创建MPMediaPickerController对象。
- 将MPMediaPickerController显示出来。
- (void)viewDidLoad
{[super viewDidLoad];UIBarButtonItem* bn = [[UIBarButtonItem alloc] initWithTitle:@"选择音乐"style:UIBarButtonItemStyleBorderedtarget:self action:@selector(choose:)];self.navigationItem.rightBarButtonItem = bn;// 创建音乐播放器//[MPMusicPlayerController applicationMusicPlayer]; 内部播放器,程序退出后停止播放musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; // 该播放器与iPod播放器内的信息相关,退出后不会停止播放。// 创建MPMediaPickerController对象mpc = [[MPMediaPickerController alloc]initWithMediaTypes:MPMediaTypeAnyAudio];// 为MPMediaPickerController设置委托mpc.delegate = self;// 设置选择音乐的提示文字。mpc.prompt = @"请选择您喜欢的音乐";// 设置是否允许进行多选mpc.allowsPickingMultipleItems = YES;// 设置是否允许选择云端音乐mpc.showsCloudItems = YES;
}
显示方法:
// 必须以modal方式显示MPMusicPlayerController视图控制器
[self presentViewController: mpc animated:YES completion:NULL];
当选择音乐文件会激发协议的方法。
// 当用户选择指定音乐时激发该方法,mediaItemCollection代表用户选择的音乐
- (void)mediaPicker: (MPMediaPickerController *)mediaPickerdidPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{NSLog(@"did pick mediaItems");// 保存用户选择的音乐列表itemList = mediaItemCollection;// 将用户选择的音乐列表设置为musicPlayer的播放列表[musicPlayer setQueueWithItemCollection:mediaItemCollection];[self.tableView reloadData];[mpc dismissViewControllerAnimated:YES completion:NULL];
}
- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker
{NSLog(@"用户取消了选择");
}
选择成功后,就可以选择音乐进行 播放了。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{// 获取表格行的行号NSUInteger rowNo = indexPath.row;// 设置播放器正要播放的音乐musicPlayer.nowPlayingItem = [itemList.items objectAtIndex:rowNo];// 开始播放[musicPlayer play];
}
iOS 多媒体(一)音频播放相关推荐
- iOS开发系列–音频播放、录音、视频播放、拍照、视频录制
iOS开发系列–音频播放.录音.视频播放.拍照.视频录制 - KenshinCui - 博客园 代码改变世界 Posts - 69, Articles - 0, Comments - 1004 Cnb ...
- iOS录音和音频播放
文章目录 简介 `AVAudioRecorder`录音 `AVAudioPlayer`播放音频文件. 简介 最近公司研发了一个语音识别的框架,但这个框架是后端识别,所以需要手机端录音,录音后将音频文件 ...
- ios中AVAudioPlayer音频播放器
IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework. ...
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制(转)
概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...
- 牛人iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...
- iOS开发之音频播放AVAudioPlayer 类的介绍
主要提供以下了几种播放音频的方法: 1. System Sound Services System Sound Services是最底层也是最简单的声音播放服务,调用 AudioServicesPla ...
- ios中的音频播放,好文,mark,等待后续
http://www.cocoachina.com/applenews/devnews/2014/0716/9155.html
- iOS 音频播放,录音,视频播放,拍照,视频录制
iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 2014-12-26 09:15 by KenshinCui, 149110 阅读, 67 评论, 收藏, 编辑 --iOS多媒体 概览 随 ...
- iOS音频播放(一):概述
(本文转自码农人生) 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改,我也因此对于iOS下的音频播放实现有了一定的研究.写这个 系列的博客目的一方面希望能够抛砖引玉 ...
最新文章
- .h头文件 .lib动态链接库文件 .dll 动态链接库
- 二分于最大流之间的关系
- lua# lua5.1.4 源码文件作用一览
- windows x64 软件约定
- 20200907:力扣203周周赛题解记录
- python面向对象设计角色攻击_Python技能:面向对象基础实战之英雄联盟
- Kafka从上手到实践 - 实践真知:Kafka Java Consumer | 凌云时刻
- 做Java软件开发有前途吗?
- 每天做好一件事,坦然微笑地面对生活
- ArchLinux下安装steam
- 绎维软件F-One获得B轮融资,华创资本领投,齐银基金跟投
- beats耳机红白交替闪烁三次_beats耳机红白灯交替闪如何解决
- ThinkSNS/ThinkSNS后台应用管理
- linux nfs root无权限,nfs root 无权限_如何允许root用户访问NFS?
- 话说两个很好的PX4博客链接:记录一下咩。
- Linux 和UNIX 的新手培训教程
- solidwork 侵权 证据_“SEI WOO SW及图”商标注册案例分析
- 信息学竞赛学习资料整理
- DataPipeline宣布完成数千万元B轮融资,加速构建中国的世界级数据中间件产品
- web 端 打开qq对话框
热门文章
- 魔兽世界单机版(模拟器)入门介绍--Starting off with WoW Emulation. 翻译
- Verilog 实现四选一选择器
- 搜苹果ipad版_春季课前第3轮评估! 安卓苹果电脑端全平台支持!
- 计算机网络之物理层(定义标准+码间串扰(奈氏准则、香农定理)+基带信号、宽带信号+编码、调制+传输介质)
- Linux驱动认知简明导论③ —— 修改树莓派引脚文件pin4Driver.c操作IO口
- 微信小程序人脸识别获取照片,并解决相机拍照在ios上有声音问题
- [cuda]cuda驱动版本对应+旧版本cuda下载网址
- 如何判断一个三位数是否为水仙花数
- h3c交换机配置nat_H3C-NAT 命令配置
- 撬动世界的支点——《引爆点》读书笔记2900字优秀范文