http://msdn.microsoft.com/en-us/library/dd370784(v=vs.85).aspx文章翻译

译文转载自http://www.cppblog.com/shenhuafeng/archive/2006/12/12/16323.html

Core Audio APIS :

Vista 里面,一组新的用户态的音频组件提供给应用程序来改善应用程序操作音频的能力,

包括以下的一些方面:

低延时,几乎无故障的音频流。

提高可靠性 ( 很多音频函数从核心态移到了用户态 )

提高了安全性 (在安全的,低优先级别的线程处理被保护的音频内容)

分配了特定的系统级别的规则 (console, multimedia, communications) 给单独的音频设备。

用户可以直接操作,相应 endpoint 设备的软件抽象 ( 如:扩音器,耳麦及麦克风 ) 以下的高层 API 是以 Core Audio APIs 来工作的。

DirectSound

DirectMusic

Windows multimedia waveXxx and mixerXxx functions

Media Foundation

Streaming Audio Renderer (SAR)

绝大多数的音频应用程序与以上的高层次的 API 交互而不是直接操作底层的 Core Audio API 。例如以下一些应用可能用到高等级的 API :

媒体播放器

DVD 播放器

游戏

商用软件

通常这些应用用到 DirectSound 和媒体的底层函数。

通常的应用不需要直接用到 Core Audio API ,例如 Core Audio API 中的 Audio streams 需要使用一个音频设备的原始数据格式。然而,一些第三方的软件开发人员开发以下的产品时,需要用到这些核心的 API :

专业的音频应用程序 (PRO AUDIO)

实时通信 (RTC) 应用程序

第三方音频 API

一个 PRO AUDIO 和 RTC 应用程序可能需要直接用底层 Core Audio API 访问音频硬件来达到最小延时的效果。一个第三方的音频 API 需要直接访问 Core Audio API 来实现高层的 API 没有提供的功能。

Core Audio API 包括:

Multimedia Device (MMDevice) API :用这些 API 来枚举系统中的音频设备。

Windows Audio Session API (WASAPI) :用这些 API 来创建和管理来自音频设备音频流。

DeviceTopology API :用这些 API 来直接访问声音适配器中的硬件数据通路的拓扑特性(如音量控制,复用器等)

EndpointVolume API :用这些 API 直接访问音频设备的声音控制。这些 API 通常是给那些以独占模式管理音频流的应用程序。

这些 API 提供对于设备的抽象概念,这些概念被描述成为 Audio Endpoint Device 。每个 API 包含很多 COM 接口。由于音频需要低延时和精确的同步,所 MMDevice, WASAPI, DeviceTopology, 和 EndpointVolume APIs 不依赖于 .NET 框架。

除了 Vista 之外其他的操作系统都不支持 Core Audio API 。包括: Microsoft Windows Server 2003, Windows XP, Windows ME, Windows 2000, 和 Windows 98 。

Vista 中的音频控制的角色概念:

假如系统中有多个音频设备,那么一个设备可能用户是用来播放电影的,另一个可能是用来玩游戏的。这样 Vista 中就引入了角色的概念。

ERole 常量

设备角色

渲染举例

捕获举例

eConsole

与计算机交互

游戏和系统的通告声音

语音命令

eCommunications

与他人的声音交流

聊天和 VOIP

eMultimedia

播放或者录制电影和音乐

电影和音乐

实时的声音录制

Vista 中的音量控制被分成 4 种级别:

IAudioStream 接口提供 session 每个流的音量控制。

methods in the IAudioStreamVolume interface.

IChannelAudioVolume 接口提供 session 中每个通道的音量控制。

ISimpleAudioVolume 接口控制每一个 Session 的主音量。

假如需要更改设备的音量大小,则需要操作 IAudioEndpointVolume 接口。

开发举例: Vista 中控制系统音量

l         初始化 COM :

CoInitializeEx(NULL, COINIT_MULTITHREADED)

l         获取 IMMDeviceEnumerator 设备指针:

CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,

CLSCTX_ALL, __uuidof(IMMDeviceEnumerator),

(void**)&m_pEnumerator)

l         获取 IMMDevice 指针,这是是所有 MM 设备 — 多媒体设备的根

n         其中第一个参数是指明设备的用途

n         第二个参数指明设备角色

m_pEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &m_pDeviceOut)

l         获取 IAudioEndpointVolume 指针:(我们需要控制系统音量所对应的对象)

m_pDeviceOut->Activate(__uuidof(IAudioEndpointVolume),CLSCTX_ALL,NULL,(void**)&m_AudioEndpointVolume)

l         根据需要调用该对象的 API ,进行操作。

Core Audio API相关推荐

  1. Windows Core Audio APIs(一)介绍

    文章目录 Windows Core Audio APIs(一)介绍 Core Audio 架构介绍 Core Audio 架构图 音频高级API Core Audio APIs 共享模式和独占模式 音 ...

  2. ASP.NET Core环境Web Audio API+SingalR+微软语音服务实现web实时语音识别

    处于项目需要,我研究了一下web端的语音识别实现.目前市场上语音服务已经非常成熟了,国内的科大讯飞或是国外的微软在这块都可以提供足够优质的服务,对于我们工程应用来说只需要花钱调用接口就行了,难点在于整 ...

  3. Windows下Core Audio APIs的使用简介

    文|网易云信资深PC端开发工程师 Windows Vista 之后的系统中,音频系统相比之前的系统有很大的变化,产生了一套新的底层 API 即 Core Audio APIs . 该低层 API 为高 ...

  4. 使用Core Audio实现VoIP通用音频模块

    最近一直在做iOS音频技术相关的项目,由于单项直播SDK,互动直播SDK(iOS/Mac),短视频SDK,都会用到音频技术,因此在这里收集三个SDK的音频技术需求,开发一个通用的音频模块用于三个SDK ...

  5. 【实战分享】使用Core Audio实现VoIP通用音频模块

    最近一直在做iOS音频技术相关的项目,由于单项直播SDK,互动直播SDK(iOS/Mac),短视频SDK,都会用到音频技术,因此在这里收集三个SDK的音频技术需求,开发一个通用的音频模块用于三个SDK ...

  6. Core Audio音频基础概述

    Core Audio Core Audio提供了数字音频服务为iOS与OS X, 它提供了一系列框架去处理音频. Core Audio中包含我们最常用的Audio Toolbox与Audio Unit ...

  7. Windows Core Audio 音频开发技术指南

    在音视频通信处理流程中,音频方面最基本的无外乎就是音频的采集和播放.windows 平台下,有很多音频采集播放的方法.作为一个 windows 端音频应用程序开发人员,经常会被各种可用的API淹没,比 ...

  8. 如何使用Web Audio API听到“ Yanny”和“ Laurel”的声音

    by _haochuan 通过_haochuan 如何使用Web Audio API听到" Yanny"和" Laurel"的声音 (How you can h ...

  9. 如何测试ASP.NET Core Web API

    在本文中,我们将研究如何测试你的ASP .NET Core 2.0 Web API解决方案.我们将了解使用单元测试进行内部测试,使用全新的ASP .NET Core的集成测试框架来进行外部测试. 本文 ...

最新文章

  1. 你管这破玩意叫 CPU ?
  2. 检查Lync SRV记录是否正常
  3. python查看文件夹下所有文件
  4. 利用Docker设置Node.js
  5. Win10桌面的图标都不见了怎么办 Win10电脑桌面图标找回方法
  6. 第15课 比尔庄园 《小学生C++趣味编程》
  7. python语言编写一个生成九宫格图片的代码_python简单实现9宫格图片实例
  8. 小白python自学—报错问题汇总(持续更新)
  9. html网页字段序号的样式,[网页设计]局部自定义li序号CSS样式的方法
  10. 关于三极管的理解---根据IC符号简易迅速判断三极管导通情况
  11. excel同时冻结首行和首列怎么操作
  12. 网络带宽 (网速) 在线测试
  13. 抖音上几百万粉丝的能有什么用?
  14. python点图为什么显示不出来怎么办_Python底图不显示打印的点
  15. python爬虫实操|爬取nba中国官网球员数据
  16. 快速傅里叶算法(灌水)
  17. 如何做Code Review——读后感
  18. MinHash (最小哈希)
  19. WKWebView 线程终止的原因——之 OOM 的控制逻辑
  20. 地方普通院校的计算机专业「科班」学生应如何提高自己的竞争力

热门文章

  1. 那么怎样使用jass语言来遍历这个区域内的所有单位呢,可以给出具体的代码实现吗...
  2. PHP程序设计-实验1-简单PHP代码入门
  3. 亚马逊echo中国使用_如何在您的Amazon Echo上收听播客
  4. linux环境本地DNS服务器搭建-coredns
  5. 图像语义分割方法研究进展
  6. IDEA之Session的活化和钝化
  7. 机器学习linux系统环境安装
  8. CRT显示器OSD菜单自动弹出的维修指引
  9. SpringKafka原理解析及源码学习-Spring生态(一)
  10. HTML5 body设置全屏背景图片