すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:カスタム音声再生

最終更新日:Jun 20, 2025

リアルタイム音声・映像 (ARTC) は、カスタム音声再生機能を提供します。これは、特定の要件を満たすために再生を制御したい、開発能力のあるユーザー向けに設計されています。

使用上の注意

ARTC には、市場で徹底的にテストされた組み込みの音声再生モジュールが含まれています。この組み込みの音声再生モジュールを使用することをお勧めします。ただし、特別な要件がある場合、または独自の音声再生モジュールがある場合は、独自のモジュールを使用して音声を処理および再生できます。

仕組み

実装の詳細は iOS と Android で異なるため、以下のセクションでは、iOS と Android のカスタム音声再生の実装ソリューションについてそれぞれ説明します。

iOS での実装

1. 再生の設定

関連パラメーター「enable_system_audio_device_play」=「TRUE」を設定します。

/* Alibaba Cloud 外部再生を無効にします。 */
[_engine setParameter:@"{\"audio\":{\"enable_system_audio_device_play\":\"FALSE\"}}"];

/* Alibaba Cloud 外部再生を有効にします。 */
[_engine setParameter:@"{\"audio\":{\"enable_system_audio_device_play\":\"TRUE\"}}"];

2. 音声コールバックをリッスンする

enableAudioFrameObserver を呼び出して、オーディオコールバックリスナーを登録します。

AliRtcAudioFrameObserverConfig* config = [[AliRtcAudioFrameObserverConfig alloc] init];

config.sampleRate = AliRtcAudioSampleRate_Unknown ;

/* AudioDeviceIos は、自分で実装する必要がある再生モジュールを示します。サンプルコードは参考用です。 */
audio_device_ = new AudioDeviceIos() ;

audio_device_->StartPlayout() ;
 
[_engine enableAudioFrameObserver:is_on audioSource:AliRtcAudioSourcePlayback config:config];

3. コールバックでシステムオーディオデバイス用に受信した PCM データを処理する

コールバックで受信したパルス符号変調 (PCM) データを処理し、オーディオデバイスに送信します。

- (BOOL)onPlaybackAudioFrame:(AliRtcAudioFrame* _Nonnull)frame {

    audio_device_->SyncWriteToBuffer(frame) ;
    return true;
}

4. チャンネルを離れてリッスンを停止する

[_engine enableAudioFrameObserver:false audioSource:AliRtcAudioSourcePlayback config:config];
audio_device_->StopPlayout();

Android での実装

1. 再生の設定

関連パラメータ 「enable_system_audio_device_play」=「TRUE」 を設定します。

/* Alibaba Cloud 内部再生を無効にします。 */
String parameter = "{\"audio\":{\"enable_system_audio_device_play\":\"FALSE\"}}";
mAliRtcEngine.setParameter(parameter);

/* Alibaba Cloud 内部再生を有効にします。 */
String parameter = "{\"audio\":{\"enable_system_audio_device_play\":\"TRUE\"}}"; 
mAliRtcEngine.setParameter(parameter);

2. 音声コールバックをリッスンする

enableAudioFrameObserver を呼び出して、オーディオコールバックリスナーを登録します。

/*
コールバックを設定します。
*/
AliRtcEngine.AliRtcAudioFrameObserverConfig config = new AliRtcEngine.AliRtcAudioFrameObserverConfig();

config.sampleRate = AliRtcAudioSampleRate_Unknown ;

/* AudioDeviceAndroid これは自分で実装する必要があります。 */
audio_device_ = new AudioDeviceAndroid() ;

audio_device_.StartPlayout() ;
 
mAliRtcEngine.enableAudioFrameObserver(true, AliRtcAudioSourcePlayback, config);

3. コールバックでシステムオーディオデバイス用に受信した PCM データを処理する

コールバックで受信した PCM データを処理し、オーディオデバイスに送信します。

/*
 システムオーディオドライバーに書き込みます。
*/

@Override
 public boolean onPlaybackAudioFrame(AliRtcEngine.AliRtcAudioFrame aliAudioSample) {
   audio_device_.SyncWriteToBuffer(aliAudioSample) ;
   return true ;
 }
 

4. チャンネルを離れてリッスンを停止する

mAliRtcEngine.enableAudioFrameObserver(false , AliRtcAudioSourcePlayback , config);
audio_device_.StopPlayout();