使用 Audio Toolbox 的 Audio Services 播放 AAC

AOSP -- 第一章 概述 在 AOSP 开源底层与面向消费者的设备之间,还存在一层厂商定制层。厂商定制界面品牌核心修改内容三星一体界面自定义系统界面、多窗口增强、桌面模式、诺克斯安全体系、S Pen 手写笔适配、自研相机架构小米MIUI / 澎湃 OS重度定制界面、自研桌面、控制中心、安全应用、应用双开功能OPPO / 一加色彩 OS / 氧 OS自定义息屏显示、桌面负一屏、禅定模式、定制图库与相机谷歌像素原生体验材质你动态取色主题、像素专属桌面、张量芯片专属优化、像素独占功能华为EMUI / 鸿蒙。 阅读详情

使用 Audio Toolbox 的 Audio Services 播放 AAC

使用 Audio Toolbox 的 Audio Services 播放 AAC

主要分为 3 步:

  1. 使用 AudioServicesCreateSystemSoundID 创建系统声音。
  2. 使用 AudioServicesAddSystemSoundCompletion 设置回调。
  3. 使用 AudioServicesPlaySystemSound 开始播放。

关于 AudioServicesPlaySystemSound 函数:

此功能播放短声音(持续时间为 30s 或更短)。由于声音可能会播放几秒钟,此功能是异步执行的。要了解声音何时完成播放,调用 AudioServicesAddSystemSoundCompletion 函数来注册回调函数。

在某些 iOS 设备上,可以通过 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 来调用振动。在其他 iOS 设备上,使用该常量调用此函数没有任何作用。

以下是该函数能播放的音频文件的限制:

  • No longer than 30 seconds in duration
  • In linear PCM or IMA4 (IMA/ADPCM) format
  • Packaged in a .caf, .aif, or .wav file

但实际上,AAC 文件也是能正常播放的,此外,该函数还有诸多限制:

  • 声音在当前系统音频音量下播放,没有编程音量控制。
  • 声音立即播放。
  • 不支持循环和立体声定位。
  • 无法同时播放,一次只能播放一个声音。
  • 声音在设备扬声器上本地播放,不使用音频路由。

核心代码:

- (void)btnClick:(UIButton *)sender
{
    self.mButton.hidden = YES;
    NSURL *audioUrl = [[NSBundle mainBundle] URLForResource:@"music" withExtension:@"aac"];
    SystemSoundID soundID;
    // create a system sound object
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)audioUrl, &soundID);
    // register a callback function that is invoked when a specified system sound finishes playing
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, &playCallback, (__bridge void *_Nullable)(self));
    // play a system sound object
    AudioServicesPlaySystemSound(soundID);
}

void playCallback(SystemSoundID ssID, void  *clientData)
{
    ViewController *vc = (__bridge ViewController *)clientData;
    vc->_mButton.hidden = NO;
}

项目地址:https://github.com/UestcXiye/AudioToolboxSystemSound。

iOS开发中的音频服务:使用AudioServicesPlaySystemSound 在Xcode项目中,打开项目导航器,选择你的项目,然后选择"Build Phases"选项卡。通过使用这个函数,你可以方便地为你的应用添加音频效果,提升用户体验。注意,在特定场景下,你可能需要使用其他更高级的音频播放方式,比如使用。要播放系统声音,你需要将声音文件添加到你的Xcode项目中,并确保在目标的"Copy Bundle Resources"部分中包含了该声音文件。在iOS应用开发中,音频播放是一个常见的需求。你可以在适当的时机调用此函数,比如在按钮点击事件中或应用程序启动时。函数来播放系统声音。 阅读详情

相关推荐

YOLOv8中的C2f模块代码详解

在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合

zzzyyy8的博客 3万+

IOS 音频开发

iPhone OS 主要提供以下了几种播放音频的方法: System Sound Services AVAudioPlayer 类 Audio Queue Services OpenAL   1. System Sound Services System Sound Services 是最底层也是最简单的声音播放服务,调用 AudioServicesPlaySystemSound 这

yuanya的专栏 7966

QMT与聚宽策略代码对接实战:Redis信号传递与xtquant交易实现

本文详细介绍了如何将聚宽策略代码与本地QMT终端进行高效对接的实战方案。通过利用Redis Stream构建可靠信号通道,解决了云端信号到本地执行的延迟与丢失问题,并结合xtquant库实现自动化交易执行。文章重点阐述了信号封装、资金映射、异步下单、风控检查及独立资金管理等核心环节,为量化交易者搭建自主可控的实盘系统提供了完整路径。

lilh34434的博客 473

音效播放小demo

音效 AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service)。System Sound Service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制: 音频播放时间不能超过30s 数据必须是PCM或者IMA4格式 音频文件必须打包成.caf、.aif、.wav中的

c897034809的博客 533

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100+ADRV9009的双收双发无线电射频板卡是基于XilinxZYNQFPGA和ADI的无线收发芯片ADRV9009开发的专用功能板卡,用于5G小基站,无线图传,数据收发...

9368

Shader Graph入门

Shader Graph 简介

zaizai1007的博客 1万+

iOS-使用AudioServices相关接口的连续震动

点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!作者:煜寒了  來源:简书文:https://www.jianshu.com/p/dded314dd92...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 1236

【路径规划】Theta_star算法机器人栅格地图最短路径规划【含Matlab源码 2618期】

Theta_star算法机器人栅格地图最短路径规划 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 365

iOS开发 AudioServices(音效播放)的使用

一.介绍 AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service).System Sound Service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制: 音频播放时间不能超过30s数据必须是PCM或者IMA4格式音频文件必须打包成.caf、.aif、.wav中的一种(注

wgl_happy的专栏 2509

华为OD机考双机位C卷 - 补种未成活胡杨 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 补种未成活胡杨(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 2418

扫地机器人设计与实现——基于嵌入式系统的智能家居解决方案

本文介绍了基于嵌入式技术的扫地机器人设计与实现。通过利用STM32单片机、传感器、驱动系统等硬件组件,并结合路径规划与控制算法、远程控制等软件技术,设计出了一款具有智能避障、路径规划、自动充电等功能的扫地机器人。系统的开发不仅提高了清洁效率,也为进一步研究和优化扫地机器人提供了实践基础。

2201_76125393的博客 1639

深度解析:downkyicore跨平台B站下载器的流媒体解析与音视频混流技术实现

downkyicore(哔哩下载姬跨平台版)是一个基于 AvaloniaUI 的 B 站视频下载工具,核心卖点是"批量下载 + 8K/HDR/杜比视界 + 工具箱"。对开发者而言,它真正有价值的地方在于:完整复刻了 B 站风控链路(WBI 签名)、抽象了可插拔下载内核(内置/Aria2)、并把 FFMpeg 封装成一套高复用的音视频处理门面。本文沿着"API 解析 → 下载调度 → 媒体混流"这条

gitblog_00751的博客 793

SecOC专题之新鲜值TripCnt

本系列为一步步拆解新鲜值的分发及管理而撰写文章属于原创,根据自身开发经验及理解撰写,若有错误请指出Trip Counter是新鲜值中变化最慢的一个part,并且自增到最大值时,会从头开始翻转计数。Trip Counter需要收发双方都保存,由于其变化较慢,所以不会经常进行同步该值。这就要求开发过程中保证每次对该值的读写必须要正确。

qq_22969363的博客 1155

深度解析:downkyicore的B站视频下载全链路,从BV号解析到音视频混流

你有没有想过这样一个场景:在 macOS 或 Linux 上想缓存一个 B 站视频,官方客户端不支持,网页版动不动就"网络错误",而市面上的下载工具大多是 Windows-only。downkyicore(哔哩下载姬跨平台版)就是为解决这个问题而生的——一个基于 AvaloniaUI 重写的开源 B 站视频下载工具,把"粘贴链接 → 解析 → 批量下载 → 音视频分离/去水印"整条链路打通了。

gitblog_01075的博客 123

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

一站式B站资源智能管理方案:BiliTools高效下载与自动化处理指南

在数字内容消费日益增长的今天,B站(哔哩哔哩)已成为许多人获取知识、娱乐和学习的重要平台。然而,官方平台的功能限制常常让用户感到不便——无法下载心仪的视频、难以管理收藏内容、缺乏批量处理能力。针对这些痛点,BiliTools哔哩哔哩工具箱应运而生,这是一款基于现代化Tauri框架构建的跨平台解决方案,为用户提供智能化的B站资源管理体验。 ## 🚀 快速入门:5分钟掌握核心操作 ### 环境准

gitblog_00414的博客 785

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

iOS中声音播放的各种方法总结

这两天禁(晋)烟(嫣)的秀恩爱,身为程序员的我们又被默默的送了一把狗粮,这段时间一直在忙公司项目,两个多月都没有写过文章了,今天闲来无事想把iOS中播放音乐(包括段音效)的部分拿出来总结一下。 主要部分: 1.音效的播放 2.音乐的播放(本地, 网络) 3.音频队列服务 1.音效播放(AudioToolbox/AudioToolbox.h) 音频文件必须打包成.caf、.aif、.wav中...

wenzfcsdn的专栏 3009

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

iOS播放音乐与播放系统声音

相同点: 都可以播放声音 不同点:  播放系统声音: 时间较短,不能暂停或者停止 播放音乐: 可播放时间较长的音乐,歌曲等。 可以暂停,停止。 代码块:播放系统声音  (大体分为四步) #import   NSURL *system_sound_url = [NSURL fileURLWithPath:[[NSBundle mainBundle]

SHTLoveXX的专栏 2513

IOS之多媒体API

视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。

irainsa的博客 293

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 不生效

最近在做一个项目用到系统震动,最合适满足需求的是 iOS系统 api 提供的 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate),于是就高兴的调用了这强大的函数;比较诡异的是当把手机打开震动反馈与铃音提示,开始一直不震动最后查看官网的说法: 根据官方文档说法有些设备不支持,但我的设备是 iOS14,并且是iPhone11 这个设备单独运行demo是可以震动的,但为什么在项目里不震动呢??? 开始探索,在调用AudioServices...

翻肚鱼儿的博客 3469

AudioServicesPlaySystemSound

对于简单的、无混音音频,AVAudio ToolBox框架提供了一个简单的C语言风格的音频服务。你可以使用AudioservicesPlaySystemSound函数来播放简单的声音。要遵守以下几个规则: 1.音频长度小于30秒 2.格式只能是PCM或者IMA4 3.文件必须被存储为.caf、.aif、或者.wav格式 4.简单音频不能从内存播放,而只能是磁盘文件 除了对简单音...

weixin_30344795的博客 382

AudioServicesPlaySystemSound音频服务—IOS开发

对于简单的、无混音音频,AVAudio ToolBox框架提供了一个简单的C语言风格的音频服务。 你可以使用AudioservicesPlaySystemSound函数来播放简单的声音。要遵守以下几个规则: 1、音频长度小于30秒 2、格式只能是PCM或者IMA4 3、文件必须被存储为.caf、.aif、或者.wav格式 4、简单音频不能从内存播放,而只能是磁盘文件 除了对简单音频

番薯大佬的专栏 1415

swift4--使用SystemSoundld播放简短声音

导入UIKit //导入音频工具箱框架,这样就可以使用系统声音服务了 导入AudioToolbox //开始前需要右键点击项目名称,添加一个声音文件(在测试时添加了acc文件无效,错误“path = nil”) class ViewController:UIViewController { override func viewDidLoad(){ super.viewDid...

weixin_41735943的博客 3047

【iOS】音频的简单使用(AudioServicesPlaySystemSound音频服务)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34289454的博客 554

OC-系统音效播放

一.介绍 AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service).System Sound Service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制: 音频播放时间不能超过30s数据必须是PCM或者IMA4格式音频文件必须打包成.caf、.aif、.wav中的一种...

lyz0925的博客 1227

IOS成长之路-使用系统默认声音、震动

导入框架: 代码: [cpp] view plain copy #import    #import       @interface MsgPlaySound : NSObject   {       SystemSoundID sound;//系统声音的id 取值范围为:1000-2000   }

zhanghaibo369的博客 787

iOS系统声音服务(System Sound Services)

系统声音服务(System Sound Services)提供了一个接口,用于播放不超过30秒的声音。它支持的文件格式有限,具体地说只有CAF、AIF和使用PCM或IMA/ADPCM数据的WAV文件。由于这些函数没有提供操纵声音和控制音量的功能,所以当你为多媒体或者游戏创建专门的配乐时,不要使用系统声音服务。 iOS使用系统声音服务来支持三种不同的通知: 1. 声音:立刻播放一个简单的声音

iOS开发学习 7838
上一篇: Audio Toolbox 框架简介
下一篇: Leetcode3200. 三角形的最大高度
UestcXiye
博客等级 码龄8年 9030粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值