Windows Phone 8 での VoIP 通話向けオーディオ ストリーミングを実装する方法

2013/12/05

対象: Windows Phone 8 のみ

このトピックでは、VoIP アプリケーションのオーディオを再生し、キャプチャする方法について説明します。VoIP アプリケーションの構造の概要については、「Windows Phone 8 用の VoIP アプリ」を参照してください。

このトピックは、次のセクションで構成されています。

Windows Phone 8 には、VoIP アプリケーションがオーディオ ストリームをキャプチャおよびレンダリングできるようにする Windows Audio Session API (WASAPI) のサブセットが含まれています。アプリケーションでは、オーディオのレンダリングに WASAPI インターフェイス IAudioRenderClient を使用し、オーディオのキャプチャに IAudioCaptureClient を使用します。これらのインターフェイスは、Windows アプリケーションで使用するのと同じように電話で使用できます。Windows との最も大きな違いは、さまざまなオーディオ エンドポイント間のルーティングを管理する方法にあります。デスクトップ アプリケーションでのルーティングの管理には WASAPI IMMDevice が使用されますが、このインターフェイスは電話ではサポートされていません。

VoIP アプリケーションでは、GetDefaultAudioCaptureId および GetDefaultAudioRenderId を呼び出し、AudioDeviceRole.Communications 列挙値で渡して、Communications オーディオ デバイス ID を取得してください。これらの ID を取得したら、ActivateAudioInterface を呼び出して関連するインターフェイスをアクティブにすることができます。

AudioDeviceRole.Communications を使用してオーディオ インターフェイスを作成すると、電話でいくつかの特別な動作が発生します。まず、これらのインターフェイスを使用するオーディオ ストリームには、その他のオーディオ (ミュージック プレーヤーからのオーディオ ストリームなど) よりも高い優先順位が与えられます。ただし、最も大きな違いは、オーディオ エンドポイントのルーティングを、AudioRoutingManager クラスを使用して管理できることです。SetAudioEndpoint(AudioRoutingEndpoint) を呼び出して、オーディオを既定のエンドポイント、スピーカーフォン、または Bluetooth ヘッドセットにルーティングするように要求します。GetAudioEndpoint(AudioRoutingEndpoint) を呼び出すか、AudioEndpointChanged イベントをサブスクライブすると、現在アクティブなオーディオ エンドポイントを照会できます。

一般的な用途のアプリでは、GetDefaultAudioCaptureId および GetDefaultAudioRenderId を使ってオーディオ デバイス ID を要求する場合は、AudioDeviceRole.Default 列挙値を使用してください。AudioDeviceRole.Communications ロールは VoIP アプリケーションのみを対象にしています。

注意注意:

オーディオをキャプチャするには、アプリケーションに ID_CAP_MICROPHONE が必要です。オーディオをバックグラウンドでレンダリングまたはキャプチャするか、再生中に優先度の低いオーディオ ストリームをミュートまたは一時停止するには、アプリケーションに ID_CAP_VOIP 機能があり、Communications オーディオ デバイス ロールを使用する必要があります。機能の詳細については、「Windows Phone のアプリ機能とハードウェア要件」を参照してください。

Windows Phone 8 で VoIP アプリケーションのオーディオ ストリーミングを実装するときは、次のことも考慮する必要があります。

  • アプリケーションは、受け取ったオーディオ データをレンダリングする前に PCM に変換する必要があります。

  • キャプチャされたオーディオは PCM 形式で返されます。アプリケーションは、ネットワーク送信に必要な場合、これをその他の任意の形式にエンコードする必要があります。

  • アプリケーションは、エコー キャンセレーション、ノイズの除去、またはゲイン コントロールをソフトウェアで実装する必要があります。

  • 組み込みのオーディオ/ビデオ同期メカニズムはありません。

  • アプリケーションは、1 つのマイク入力ストリームのみへのアクセス権のみを持ちます。ノイズ抑制またはその他のオーディオ処理でのデュアル マイクの使用はサポートされていません。

Windows Phone 8 では、WASAPI が公開する API の一部がサポートされます。電話で使用できる API の一覧については、「Windows Phone のネイティブ コード用オーディオ キャプチャおよびレンダリング API」を参照してください。

表示:
© 2014 Microsoft