成都网站建设设计

将想法与焦点和您一起共享

ios开发播放声音,iOS声音

ios开发怎么让音频播放没有声音

1、MediaRecorder录音,MediaPlayer播放,使用的时候注意他们的生命周期。

林口ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

2、模拟器上播放声音是没问题的,pc外放能听的到

还有问题可以追问

iOS 推送自定义声音

网上有很多博客说添加IOS10之后新增的Notification Service Extension才可以推送Apns自定义铃声,实际上是不对的,简单的自定义语音推送IOS10之前就已经支持,而且APNS Server与deviceToken直接相关联,自然也不存在许多博客说的杀死App后接受不到推送的问题。

有关Notification Service Extension多媒体拓展问题可参考

本文提供简单的自定义语音推送解决方案。

修改苹果原生推送声音:

(1)App在后台或者被杀死时,服务器给你推送的userinfo中sound字段的value和你本地的声音文件名一致时,这样就可以播放你本地自定义的语音文件(mp3,wav等常见语音格式都可以支持)。

(2)App运行在前台时大部分App会关闭掉UNNotificationPresentationOptionSound权限,当你有类似美团接单,支付宝到账等需前台响铃的需求时需要自己写响铃方法,这里主要有两种解决方案。

方案1播放系统音效

将此方法在应用在前台处理推送的方法中调用,注意区分iOS10前后处理方法的不同。

方案2:AVAudioPlayer播放

单例一个AVAudioPlayer控制类

这里我们推荐使用第一种方法,通过系统方法进行播放。

Core Audio框架详细解析(二) —— 基于CoreAudio的ios音频服务总结分析

Core Audio 是iOS和MAC系统中的关于数字音频处理的基础,它是应用程序用来处理音频的一组软件框架,所有关于iOS音频开发的接口都是由Core Audio来提供或者经过它提供的接口来进行封装的。

其实一句话,它是任何iOS或者MAC系统音频处理框架的基础。

具体可以用官方文档的一张图表示。

接下来我们就一起分析一下。

这里的高级别服务,更加接近于顶层,基本上我们很多关于音频开发的工作在这一层就可以完成。

它位于框架 AudioToolbox 中。

提供录制、播放、暂停、循环、和同步音频它自动采用必要的编解码器处理压缩的音频格式。

要在iOS设备上播放和录制音频,苹果推荐我们使用 AVFoundation 框架中的 AVAudioPlayer 和 AVAudioRecorder 类。虽然用法比较简单,但是不支持流式;这就意味着:在播放音频前,必须等到整个音频加载完成后,才能开始播放音频;录音时,也必须等到录音结束后,才能获取到录音数据。这给应用造成了很大的局限性。为了解决这个问题,我们就需要使用 Audio Queue Services 来播放和录制音频。感兴趣的可以看我前面写的几篇关于 Audio Queue Services 的文章。这里只是简单的给出录音和播放的原理图,具体原理和流程,看我前面写的那几篇,都有详细的介绍。

它位于框架 AVFoundation 中。

是专为IOS平台提供的基于Objective-C接口的音频播放类,可以支持iOS所支持的所有音频的播放,它主要支持以下音频格式。

这个是纯OC的实现,特点就是调用简单,下面简单的看一下他的API。

由 Audio File 与 Audio Converter 组合而成,提供压缩及无压缩音频文件的读写能力。

它与 Audio File Services 、 Audio File Stream Services 和 Audio Queue Services 等同时存在 AudioToolbox 框架中。 ExtendedAudioFile 相对 Audio File Services 和 Audio Converter Services ,API调用非常简单和明确,并且不需要去处理 AudioStreamPacketDescription ,在实际开发中逻辑更为清晰。

它就是存在框架 OpenAL 中。

是CoreAudio对OpenAL标准的实现,可以播放3D混音效果。

OpenAL 主要的功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标、声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含 8 或 16 位元、单声道或立体声 PCM 格式的音效资料,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。

不同于 OpenGL 规格,OpenAL 规格包含两个API分支;以实际 OpenAL 函式组成的核心,和 ALC API , ALC 用于管理表现内容、资源使用情况,并将跨平台风格封在其中。还有 “ALUT ”程式库,提供高阶“易用”的函式,其定位相当于 OpenGL 的 GLUT 。

该层功能比较齐全,包括音频数据格式转换,音频文件读写,音频流解析,插件工作支持等。

它位于框架 AudioToolbox 中。

负责音频数据格式的转换

它位于框架 AudioToolbox 中。

负责音频数据的读写。

它位于框架 AudioToolbox 中。

支持均衡器和混音器等数字信号处理的插件。

它位于框架 AudioToolbox 中。

负责流解析。

它位于框架 Core Audio 中。

负责音频音频时钟同步。

该主要在MAC上的音频APP实现中并且需要最大限度的实时性能的情况下使用,大部分音频APP不需要使用该层的服务。而且,在iOS上也提供了具备较高实时性能的高层API达到你的需求。例如 OpenAL ,在游戏中具备与I/O直接调用的实时音频处理能力。

它在 IOKit 框架中,与硬件驱动交互。

获得用户空间访问硬件设备和驱动程序。 I / O Kit 框架通过设备接口机制实现对I / O Kit对象(驱动程序和结点)的非内核访问。

音频硬件抽象层,使API调用与实际硬件相分离,保持独立。

它位于 Core MIDI 框架中,与MIDI设备(如硬件键盘和合成器)进行通信。

Core MIDI 框架提供了用于与MIDI(乐器数字接口)设备(包括硬件键盘和合成器)进行通信的API。 使用基座连接器或网络从iOS设备进行连接。 有关使用基座连接器的更多信息,请参阅Apple的 MFi program 。

访问电脑硬件时钟。

只实现音频的播放,没有其他需求, AVAudioPlayer 就可以满足需求。它的接口使用简单,不用关心其中的细节,通常只提供给它一个播放源的URL地址,并且调用其play、pause、stop等方法进行控制,observer其播放状态更新UI即可。

APP需要对音频进行流播放,就需要 AudioFileStreamer 加 Audio Queue ,将网络或者本地的流读取到内存,提交给 AudioFileStreamer 解析分离音频帧,分离出来的音频帧可以送给 AudioQueue 进行解码和播放,可参考下面。

AudioStreamer

FreeStreamer

AFSoundManager

APP需要需要对音频施加音效(均衡器、混响器),就是除了数据的读取和解析以外还需要用到AudioConverter或者Codec来把音频数据转换成PCM数据,再由AudioUnit+AUGraph来进行音效处理和播放,可参考下面。

DouAudioStreamer

TheAmazingAudioEngine

AudioKit

1. iOS Audio Unit(一)

ios开发设备静音怎么播放声音

可能在软件某些时候需要震动手机以示提醒,可能还要播放一段特殊的声音引起用户的注意,在ios中如何实现呢?

首先实现震动,其实就是调用系统的方法,一句话就行,AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);当然前提是要加入AVFoundation.framework这个框架

然后实现播放声音,可能还要循环播放多少次,循环播放用n次,[self.player setNumberOfLoops:n];

因为我播放的声音是mp3,是用AudioToolbox框架,需要加入这个框架

代码如下

ViewController.h文件

#import

#import

#import

@interface ViewController : UIViewController{

AVAudioPlayer *player;

}

@property (retain) AVAudioPlayer *player;

@end

ViewController.m文件

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize player;

- (BOOL) prepAudio

{

NSError *error;

NSString *path = [[NSBundle mainBundle] pathForResource:@"loop" ofType:@"mp3"];

if (![[NSFileManager defaultManager] fileExistsAtPath:path]) return NO;

self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:error];

if (!self.player)

{

NSLog(@"Error: %@", [error localizedDescription]);

return NO;

}

[self.player prepareToPlay];

[self.player setNumberOfLoops:1];

return YES;

}

- (void)viewDidLoad

{

[self prepAudio];

[self.player play];

AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);

}

@end

下载源代码

iOS开发播放系统提示音

 项目中应产品的需求,需给button添加点击声音。下面我总结了一下关于播放系统提示音和播放自定义声音的方法。

一:播放系统提示音。

第一步:首先得导入AudioToolbox框架  #importAudioToolbox/AudioToolbox.h

第二步:定义一个SystemSoundIDSystemSoundID soundID =1000;

         AudioServicesPlaySystemSound(soundID);

SystemSoundID具体参数请参考 传送门

二:播放本地文件

//得到音效文件的地址

NSString*soundFilePath =[[NSBundlemainBundle]pathForResource:nameofType:type];

//将地址字符串转换成url

NSURL*soundURL = [NSURLfileURLWithPath:soundFilePath];

//生成系统音效id

AudioServicesCreateSystemSoundID((__bridgeCFURLRef)soundURL, soundFileObject);

//播放系统音效

AudioServicesPlaySystemSound(soundFileObject);


分享文章:ios开发播放声音,iOS声音
文章位置:http://chengdu.cdxwcx.cn/article/dsohhdc.html