//音频播放
/*英译:record:录音 */

1 导入头文件
#import<AVFoundation/AVFoundation.h>
//AVAudioSession是一个单例模式。
在IOS7以前可以不用设置,在IOS7上不设置AVAudioSession则不可以录音。

//处理录音或播放结束后,要关闭音频会话,来延续后台音乐的播放

AVAudioSession *audioSession = [AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:NO error:nil];

//处理要想启用其他程序的后台音乐播放,则要用如下设置
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivatio

//处理录音保存路径

1 CFUUID每次都会产生一个唯一号
CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);

NSString *cfuuidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault

2 创建沙盒
NSString *catchPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];

3 创建沙盒文件夹(唯一的)
NSString *audioRecordFilePath=[catchPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.AAC", cfuuidString]];

4 将本地NSString转化为NSURL(fileURLWithPath)
NSURL *url=[NSURL fileURLWithPath:audioRecordFilePath];

//音频录制(标准过程5,9更新)

准备:导入AVFoundation框架及头文件

1 设置会话类型,指定类型为播放及录音
AVAudioSession *audioSession = [AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

2 激活会话类别
[audioSession setActive:YES error:nil];

3 封装字典参数,有音频格式int,采样率float,通道数int,深度int
是通过KVC来设置的(setValue forKey)
NSDictionary *setting=[NSDictionary dictionary];

[setting setValue:[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey];

4 封装保存音频的沙盒路径

5 实例化录音对象,参数:保存URL,参数字典,错误,
注意模拟器调试,只能保存到沙盒中,
AVAudioRecorder *recorder = [[AVAudioRecorder alloc]initWithURL:(NSURL *) settings:(NSDictionary *) error:&error];

6 预加载准备录音
[recorder prepareRecorder];

7 处理按钮点击监听录音
监听按钮touchDown:录音开启 [recorder recorder];
监听按钮touchUpInset:手指在点击按钮后抬起
及touchUpOutset:手指在点击按钮后在其他地方抬起
停止录音 [recorder stop];

录音的实现总结:
1 实例化单例会话对象,设置会话类别为录音及播放模式,开启会话
2 实例化录音对象,参数有存储沙盒路径,音频字典参数(音频格式,采样率,深度等)
3 封装沙盒路径
4 实例化录音对象 路径 字典参数 错误
5 预加载开启
6 监听按钮的点击状态,按下录音,抬起停止
7 监听点击 实例化音频播放对象,填入URL,播放开启

//音频播放(限本地播放)
苹果推荐的音频类型:AAC,IMA4,CAF(CoreAudioFormat)

1 AVFoundation
(只能播放本地音频,非网络音频)
_player=[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];

[_player play];

总结:播放本地音频三步
《1》封装音频URL路径
《2》类方法 初始化音频对象,参数URL 错误处理
《3》对象开启
对象中有许多属性 设置循环次数,播放控制(play/stop)及预加载方法prepareToPlay

//视频音频播放(支持网络)
2 MediaPlayer
1、首先导入media.play.framework 框架

2、包含头文件<MediaPlayer/MediaPlay.h>

具体实现步骤

1 封装URL路径

2 实例化MPMoviePlayerController对象
alloc initWithURL 添加URL
3 将音频控制器View添加到self.view (add)

(由于建立控制器,给视频播放对象非配内存空间,播放结束要去释放他,电影播放结束是会注册一个叫MPMoviePlaybackDidFinishNotification的通知通知到到通知中心,所以做音频播放对象释放,给self添加监听者来释放)
4 [NSNotificationCenter defaultCenter] addObsever:self selector:@selector(MovePlayBackComplete:)Object:

4 音频对象开启 play

(一般建一个按钮,监听方法里面写这些东西)

ios原声音频播放AVAudioSession 总结的更多相关文章

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

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

  2. iOS开发系列--音频播放(音效和音乐)播放本地的

    音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为 点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音 ...

  3. iOS开发系列--音频播放、录音、

    音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音频 ...

  4. 关于ios原声嵌入web页面的问题

    当在一个界面中既有原生又有web的时候,如果想让上下整体滑动的话,我们怎么确定web的高度呢,下面分享一下我的心得 首先在webView的代理方法中我们可以获取到加载完整个web页面的高度 - (vo ...

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

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

  6. IOS原声二维码条形码扫描实现

    本文讲述如何用系统自带的东东实现二维码扫描的功能:点击当前页面的某个按钮,创建扫描VIEW.细心的小伙伴可以发现 title被改变了,返回按钮被隐藏了.这个代码自己写就行了,与本文关系不大...绿色的 ...

  7. IOS 音频播放

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

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

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

  9. iOS开发----音频播放、录音、视频播放、拍照、视频录制

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

随机推荐

  1. C++异常处理

    引言 异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题.而传统错误处理技术,检查到一个局部无法处理的问题时: 1.终止程序(例如atol,atoi ...

  2. iOS中UI阶段常用的一些方法

    UI 即 UserInterface(用户界面 1.iOS系统版本,每年都有更新.对我们开发者而言,主要的是观察API的变化. 2.iPhone新手机发布,会产生不同尺寸的屏幕,现在市面上有4种尺寸, ...

  3. .Net Core Linux centos7行—vscode开发,linux部署运行

    前面搭建好啦linux运行环境,下面搭建windows下的开发环境.并完成调试 参考地址:https://www.microsoft.com/net/core#windows. 按照步骤来就好.安装. ...

  4. centos虚拟机网络桥接配置

    1.虚拟机设置->网络适配器->选择桥接模式->重启虚拟机 2.使用命令进行配置IP地址 (引用别人的配置命令) 修改/etc/sysconfig/network-scripts 目 ...

  5. zend studio(Eclipse)和PyDev搭建Python开发环境

    原文是用Eclipse作开发环境,由于我已经装了zs,而zs也是基于Eclipse的,一试之下发现可以用,呵呵省事了.原文:http://www.cnblogs.com/Realh/archive/2 ...

  6. django创建blog

    如果本文看不懂的,去看的我视频吧!http://www.testpub.cn/ ------------------------------------------- Django 自称是" ...

  7. 如何在linux环境下搭建github环境

    首先安装github # yum install git 完成之后 https://help.github.com/articles/generating-ssh-keys/#platform-lin ...

  8. java 随机数 优惠码 生成 随机字串

    package test; import java.util.HashSet; import java.util.Random; import java.util.Set; public class ...

  9. C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用

    1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图 ...

  10. fedora 24 使用扇贝网页版没有声音

    (扇贝的官方答疑:https://www.shanbay.com/help/faq/no_voice/) 第4步下载MP3测试文件没办法使用: 似乎因为MP3格式的文件是的版权问题. 打算安装能处理M ...