Android Webrtc 将流更改为 STREAM_MUSIC
Android Webrtc change stream to STREAM_MUSIC
我已经创建了一个从一个设备到另一个设备的 WebRTC 会话,该设备应该能够控制音乐流的音量,但是 WebRTC 最初设计用于流式传输 voice_call,因此正在使用 voice_call 频道和使用通话音量控制对于非通话应用来说不是好的行为。
我试图将 WebRTC 源 WebRtcAudioTrack 中的 STREAM_VOICE_CALL 更改为 STREAM_MUSIC 以使用流音乐音量,但唯一的变化是 android 将其检测为音乐但是音量随通话音量变化。
我找到了解决方法。为此,您必须更改 opensls 播放器
改变这个from here
// corresponds to android.media.AudioManager.STREAM_VOICE_CALL.
SLint32 stream_type = SL_ANDROID_STREAM_VOICE;
RETURN_ON_ERROR(
(*player_config)
->SetConfiguration(player_config, SL_ANDROID_KEY_STREAM_TYPE,
&stream_type, sizeof(SLint32)),
false);
至此
// corresponds to android.media.AudioManager.STREAM_MUSIC.
SLint32 stream_type = SL_ANDROID_STREAM_MEDIA;
RETURN_ON_ERROR(
(*player_config)
->SetConfiguration(player_config, SL_ANDROID_KEY_STREAM_TYPE,
&stream_type, sizeof(SLint32)),
false);
这样做here too
我已经创建了一个从一个设备到另一个设备的 WebRTC 会话,该设备应该能够控制音乐流的音量,但是 WebRTC 最初设计用于流式传输 voice_call,因此正在使用 voice_call 频道和使用通话音量控制对于非通话应用来说不是好的行为。
我试图将 WebRTC 源 WebRtcAudioTrack 中的 STREAM_VOICE_CALL 更改为 STREAM_MUSIC 以使用流音乐音量,但唯一的变化是 android 将其检测为音乐但是音量随通话音量变化。
我找到了解决方法。为此,您必须更改 opensls 播放器
改变这个from here
// corresponds to android.media.AudioManager.STREAM_VOICE_CALL.
SLint32 stream_type = SL_ANDROID_STREAM_VOICE;
RETURN_ON_ERROR(
(*player_config)
->SetConfiguration(player_config, SL_ANDROID_KEY_STREAM_TYPE,
&stream_type, sizeof(SLint32)),
false);
至此
// corresponds to android.media.AudioManager.STREAM_MUSIC.
SLint32 stream_type = SL_ANDROID_STREAM_MEDIA;
RETURN_ON_ERROR(
(*player_config)
->SetConfiguration(player_config, SL_ANDROID_KEY_STREAM_TYPE,
&stream_type, sizeof(SLint32)),
false);
这样做here too