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