信息
您所需的主题如下所示。但此主题未包含在此库中。

如何为 Windows Phone 8 的 VoIP 通话实现音频流传输

2014/6/18

仅适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1

本主题介绍如何为 VoIP 应用程序播放和捕获音频。关于 VoIP 应用程序结构的简介,请参见 Windows Phone 8 的 VoIP 应用

本主题包括以下部分。

Windows Phone 8 包含 Windows 音频会话 API (WASAPI) 的子集,使 VoIP 应用程序可以捕获并呈现音频流。您的应用程序将使用 WASAPI 接口 IAudioRenderClient 呈现音频,使用 IAudioCaptureClient 捕获音频。您可以像在 Windows 应用程序中一样在手机上使用这些接口。与 Windows 的最大差别在于对不同音频端点之间的路由的管理方式。WASAPI IMMDevice 接口用于管理桌面应用程序中的路由,但手机不支持该接口。

VoIP 应用程序应通过调用 GetDefaultAudioCaptureIdGetDefaultAudioRenderId,并传入 AudioDeviceRole.Communications 枚举值来获取通信音频设备 ID。获取这些 ID 后,您可以通过调用 ActivateAudioInterface 来激活相关接口。

使用 AudioDeviceRole.Communications 创建音频接口会造成这些接口在手机上具有一些特殊行为。首先,使用这些接口的音频流会得到比其他音频更高的优先级,如来自音乐播放器的音频流。但是最大的差异在于,可以使用 AudioRoutingManager 类管理音频端点路由。您可以调用 SetAudioEndpoint(AudioRoutingEndpoint) 以请求将音频路由至默认端点、扬声器或蓝牙耳机。您可以通过调用 GetAudioEndpoint(AudioRoutingEndpoint) 或订阅 AudioEndpointChanged() 事件来查询当前活动的音频端点。

使用 GetDefaultAudioCaptureIdGetDefaultAudioRenderId 请求音频设备 ID 时,常规用途的应用应使用 AudioDeviceRole.Default 枚举值。AudioDeviceRole.Communications 角色仅用于 VoIP 应用程序。

警告说明警告:

您的应用程序必须具有 ID_CAP_MICROPHONE 才能捕获音频。您的应用程序必须具有 ID_CAP_VOIP 功能并使用通信音频设备角色才能在后台呈现或捕获音频,或者在播放期间静音或暂停次要音频流。有关功能的更多信息,请参见 Windows Phone 8 应用功能和硬件要求

在为 Windows Phone 8 上的 VoIP 应用程序实现音频流时,还应考虑以下内容:

  • 应用程序负责在呈现之前将接收到的音频数据转换为 PCM。

  • 以 PCM 格式返回捕获到的音频。如果网络传输有需要,那么应用程序负责将此编码为任何其他格式。

  • 应用程序负责实现任何回音抵消、降噪或软件中的获取控制。

  • 无内置音频/视频同步机制。

  • 应用程序只能访问单个麦克风输入流。噪音抑制或其他音频处理不支持双麦克风。

Windows Phone 8 支持由 WASAPI 公开的 API 的子集。有关可在手机上使用的 API 的列表,请参见 面向 Windows Phone 本机代码的音频捕获和呈现 API

显示: