播放音频引擎服务端产生的音频数据
场景介绍
通过调用音频引擎提供的API,用户可以播放音频引擎服务端发送的音频数据。
前提条件
NA
开发流程
- 用户通过通信模块,正确接收到音频引擎服务端发送的音频数据。
- 用户调用音频引擎客户端提供的API,播放音频。
- 用户注册客户端音频数据保存hook函数,音频引擎客户端会把接收到的音频数据通过hook函数进行保存。
- 用户可以调用音频引擎客户端提供的API,开启/关闭音频播放。
编码实例
具体场景
依据开发流程,通过调用音频引擎客户端的API,播放服务端发送的音频数据,并将音频数据进行保存。
代码样例
import android.util.Log;
import com.huawei.cloudgame.audioplay.AUDIOSAVEHOOK;
import com.huawei.cloudgame.audioplay.AudioTrackPlayer;
public class DataPipe implements AUDIOSAVEHOOK {
private static DataPipe instance = new DataPipe();
private DataPipe() {
}
public static DataPipe getInstance() {
return instance;
}
public void audioSaveData(byte[] data, int length) {
// 音频保存接口的具体实现,由用户自己实现
}
public static void registerAudioSaveHook() {
int ret = AudioTrackPlayer.getInstance().registerAudioSaveHook(DataPipe.getInstance());
if (ret != AudioTrackPlayer.VMI_SUCCESS) {
Log.e("AudioClient", "register audio save hook fail. ret=%d", ret);
}
}
}
public class Test {
public static void main(String[] args) {
DataPipe.registerAudioSaveHook();
byte[] data = getRecvData() // 示意函数:获取音频引擎服务端发送的音频数据函数。
int ret = AudioTrackPlayer.getInstance().onRecvAudioPacket(data, data.length);
if (ret != AudioTrackPlayer.VMI_SUCCESS) {
Log.e("AudioClient", "audio client play audio fail");
}
ret = AudioTrackPlayer.startAudio();
if (ret != AudioTrackPlayer.VMI_SUCCESS) {
Log.e("AudioClient", "audio client start fail");
}
ret = AudioTrackPlayer.stopAudio();
if (ret != AudioTrackPlayer.VMI_SUCCESS) {
Log.e("AudioClient", "audio client stop fail");
}
}
}
父主题: 音频引擎客户端