リアルタイム音声・映像 (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();