Windows下Core Audio APIS 音频应用开发(四)
来源:互联网 发布:ubuntu 安装koala 编辑:程序博客网 时间:2024/05/16 18:32
前面说了音频数据的采集和播放,接下来我们说说如何利用Core Audio APIS来控制音量。
从官网文档的编排上看,在介绍Volume Controls之前,文档上先给我们介绍了一个比较重要的概念:Audio Sessions!大家可以去看看,我觉得还是有必要了解下的(我也还没有理解透彻,就不误导大家了)。
下面看看Core Audio API关于音量控制这方面的函数吧,主要有:
1. ISimpleAudioVolume
2. IChannelAudioVolume
3.IAudioStreamVolume
4.IAudioEndpointVolume
其中,前面三种只适用于共享模式,第四种可用于独占模式,也可用于共享模式。前面三种Api的用法很相似,在此只介绍IChannelAudioVolume的用法,下面直接上代码:
hr = CoCreateInstance( CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator); EXIT_ON_ERROR(hr) hr = pEnumerator->GetDefaultAudioEndpoint( eCapture, eConsole, &pDevice); EXIT_ON_ERROR(hr);
hr = pDevice->Activate( IID_IAudioClient, CLSCTX_ALL, NULL, (void**)&pAudioClient); EXIT_ON_ERROR(hr) hr = pAudioClient->GetMixFormat(&pwfx); EXIT_ON_ERROR(hr)
hr = pAudioClient->Initialize( AUDCLNT_SHAREMODE_SHARED, 0, hnsRequestedDuration, 0, pwfx, NULL); EXIT_ON_ERROR(hr) hr = pAudioClient->GetBufferSize(&bufferFrameCount); EXIT_ON_ERROR(hr)
hr = pAudioClient->GetService( IID_IAudioCaptureClient, (void**)&pCaptureClient);
//前面的代码不解释,下面是创建一个音量控制的指针,获取接口,设置音量,很简单吧
IChannelAudioVolume * _IChannelAudioVolume;hr = pAudioClient->GetService(IID_IChannelAudioVolume,(void**)&_IChannelAudioVolume);
float volume[2] = {1.0,1.0};
_IChannelAudioVolume->SetAllVolumes(2,volume,NULL);
关于IAUDIOEndpointVolume的用法,略显复杂,不过官网给出了详细的参考代码,大家可自行去查看,https://msdn.microsoft.com/en-us/library/dd370839(v=vs.85).aspx
具体思路是:
1. 自定义一个回调类(从IAudioEndpointVolumeCallback 派生,重写相应的一些函数)
2. 定义IAudioEndpointVolume指针,并获取相应的接口
3. 注册回调(主要是为了客户端程序在获悉音量发生变化时,能做出相应的处理,比如调解音量滑动条等等)
- Windows下Core Audio APIS 音频应用开发(四)
- Windows下Core Audio APIS 音频应用开发(一)
- Windows下Core Audio APIS 音频应用开发(二)
- Windows下Core Audio APIS 音频应用开发(三 )
- Windows下Core Audio APIS 音频应用开发(一)
- Windows下Core Audio APIS 音频应用开发(五)
- Core Audio APIs 技术笔记一(扬声器音量设置)
- core audio 音频捕获
- Core Audio APIS in Vista/Win7实现
- Core Audio APIS in Vista/Win7实现
- Core Audio之音频概念
- Core Audio之音频概念
- Core Audio APIs 技术笔记二(麦克风音量和增强设置)
- Core Audio APIs 技术笔记二(麦克风音量和增强设置)
- iOS语音开发--Core Audio
- Unity3D游戏开发之加载音频(Audio Resource)
- ios开发学习--音频声效(Audio)效…
- 10分钟学会在windows-Linux下设置ASP.Net Core开发环境并部署应用
- ZOJ 3690 Choosing number(矩阵快速幂)
- IOS MVC模式初探
- 关于Action返回结果类型的事儿(上)
- stagefright概述
- 标准的window API 便利文件夹 c++
- Windows下Core Audio APIS 音频应用开发(四)
- Android圆形ImageView和圆角矩形ImageView
- vim.fork更新
- spring BeanFactoryPostProcessor PathMatchingResourcePatternResolver
- Codeforces 558E A Simple Task (简单题)
- [leetcode-234]Palindrome Linked List (C)
- Android 最新控件 Toolbar
- 使用 CSS 媒体查询创建响应式网站 适用于所有屏幕大小的设计
- 超赞!帮你发掘高素质图标的50个优质网站