iOS提供播放音频的方法:

  1. System Sound Services
  2. AVAudioPlayer
  3. MPMusicPlayerController

1 System Sound Services

System Sound Services 方式只适合播放一些很小的提示或警告音频。有一些限制:

  • 声音长度不超过30s。
  • 不能控制播放进度
  • 声音文件必须是PCM或IMA4格式。
  • 打包成.caf、.aif或.wav的文件
  • 无循环播放和立体声控制
  • 调用方法后立即播放声音
System Sound Service使用很简单。
1 由于System Sound Service 需要AudioToolbox框架的支持,所以需要导入AudioToolbox.framework。
2 并在需要的地方导入头文件    #import<AudioToolbox/AudioToolbox.h>
/**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

1 导入AVAudioPlayer.framework
2 引入头文件 #import<AVFoundation/AVFoundation.h>
3 如果为audio player设置代理,则需实现协议AVAudioPlayerDelegate
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播放器内的信息相关,退出后不会停止播放。

使用其播放音乐步骤:

  1. 创建MPMusicPlayerController对象。(导入#import <MediaPlayer/MediaPlayer.h>)
  2. 调用MPMusicPlayerController对象的setQueueWithQuery:或setQueueWithItemCollection:方法设置将要播放的音乐队列。
  3. 调用MPMusicPlayerController对象的play、pause、stop控制播放。

对于其中的音乐队列,我们首先可以通过MPMediaPickerController选择系统音乐。

MPMediaPickerController继承了ViewController,可以当成视图控制器使用。

使用MPMediaPickerController步骤:

  1. 实现协议MPMediaPickerControllerDelegate。
  2. 创建MPMediaPickerController对象。
  3. 将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 多媒体(一)音频播放相关推荐

  1. iOS开发系列–音频播放、录音、视频播放、拍照、视频录制

    iOS开发系列–音频播放.录音.视频播放.拍照.视频录制 - KenshinCui - 博客园 代码改变世界 Posts - 69, Articles - 0, Comments - 1004 Cnb ...

  2. iOS录音和音频播放

    文章目录 简介 `AVAudioRecorder`录音 `AVAudioPlayer`播放音频文件. 简介 最近公司研发了一个语音识别的框架,但这个框架是后端识别,所以需要手机端录音,录音后将音频文件 ...

  3. ios中AVAudioPlayer音频播放器

    IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework. ...

  4. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制(转)

    概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...

  5. 牛人iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...

  6. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...

  7. iOS开发之音频播放AVAudioPlayer 类的介绍

    主要提供以下了几种播放音频的方法: 1. System Sound Services System Sound Services是最底层也是最简单的声音播放服务,调用 AudioServicesPla ...

  8. ios中的音频播放,好文,mark,等待后续

    http://www.cocoachina.com/applenews/devnews/2014/0716/9155.html

  9. iOS 音频播放,录音,视频播放,拍照,视频录制

    iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 2014-12-26 09:15 by KenshinCui, 149110 阅读, 67 评论, 收藏, 编辑 --iOS多媒体 概览 随 ...

  10. iOS音频播放(一):概述

    (本文转自码农人生) 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改,我也因此对于iOS下的音频播放实现有了一定的研究.写这个 系列的博客目的一方面希望能够抛砖引玉 ...

最新文章

  1. .h头文件 .lib动态链接库文件 .dll 动态链接库
  2. 二分于最大流之间的关系
  3. lua# lua5.1.4 源码文件作用一览
  4. windows x64 软件约定
  5. 20200907:力扣203周周赛题解记录
  6. python面向对象设计角色攻击_Python技能:面向对象基础实战之英雄联盟
  7. Kafka从上手到实践 - 实践真知:Kafka Java Consumer | 凌云时刻
  8. 做Java软件开发有前途吗?
  9. 每天做好一件事,坦然微笑地面对生活
  10. ArchLinux下安装steam
  11. 绎维软件F-One获得B轮融资,华创资本领投,齐银基金跟投
  12. beats耳机红白交替闪烁三次_beats耳机红白灯交替闪如何解决
  13. ThinkSNS/ThinkSNS后台应用管理
  14. linux nfs root无权限,nfs root 无权限_如何允许root用户访问NFS?
  15. 话说两个很好的PX4博客链接:记录一下咩。
  16. Linux 和UNIX 的新手培训教程
  17. solidwork 侵权 证据_“SEI WOO SW及图”商标注册案例分析
  18. 信息学竞赛学习资料整理
  19. DataPipeline宣布完成数千万元B轮融资,加速构建中国的世界级数据中间件产品
  20. web 端 打开qq对话框

热门文章

  1. 魔兽世界单机版(模拟器)入门介绍--Starting off with WoW Emulation. 翻译
  2. Verilog 实现四选一选择器
  3. 搜苹果ipad版_春季课前第3轮评估! 安卓苹果电脑端全平台支持!
  4. 计算机网络之物理层(定义标准+码间串扰(奈氏准则、香农定理)+基带信号、宽带信号+编码、调制+传输介质)
  5. Linux驱动认知简明导论③ —— 修改树莓派引脚文件pin4Driver.c操作IO口
  6. 微信小程序人脸识别获取照片,并解决相机拍照在ios上有声音问题
  7. [cuda]cuda驱动版本对应+旧版本cuda下载网址
  8. 如何判断一个三位数是否为水仙花数
  9. h3c交换机配置nat_H3C-NAT 命令配置
  10. 撬动世界的支点——《引爆点》读书笔记2900字优秀范文