使用OHAudio播放音频码流可以通过以下三种方式提高音量:
// 要设置的音量值,音量值的范围是[0.0f, 1.0f]。 float volume = 1.0f; // 设置当前音频流音量值。 OH_AudioStream_Result state = OH_AudioRenderer_SetVolume(m_renderer, volume);
// 设置本机内置发声设备为扬声器。 OH_AudioRenderer_SetDefaultOutputDevice(m_renderer, AUDIO_DEVICE_TYPE_SPEAKER);
void AudioHelper::RaiseVolume(char *buf, uint32_t size, double vol) {
OH_LOG_INFO(LOG_APP, "RaiseVolume");
if (!size) {
return;
}
for (int i = 0; i < size; i += 2) {
// 根据不同位数的PCM数据设置上下界,此处以16位PCM为例
signed long minData = -0x8000;
signed long maxData = 0x7FFF;
// 拼接单个16位样本
signed short wData = buf[i + 1];
wData = MAKEWORD(buf[i], buf[i + 1]);
signed long dwData = wData;
// 对样本做数乘和上下限控制
dwData = dwData * vol;
if (dwData < minData) {
dwData = minData;
} else if (dwData > maxData) {
dwData = maxData;
}
wData = LOWORD(dwData);
// 将处理后的数据保存
buf[i] = LOBYTE(wData);
buf[i + 1] = HIBYTE(wData);
}
} OH_AudioRenderer_SetDefaultOutputDevice()接口允许在AudioRenderer创建以后的任何时间被调用,系统会记录应用设置的默认本机内置发声设备。在应用启动播放时,若有外接设备如蓝牙耳机/有线耳机接入,系统优先从外接设备发声;否则系统遵循应用设置的默认本机内置发声设备发声。