Android Webrtc 将流更改为 STREAM_MUSIC

nim*_*adi 5 android audio-streaming webrtc webrtc-android

我已经创建了从一台设备到另一台设备的 WebRTC 会话,该设备应该能够控制音乐流的音量,但 WebRTC 最初设计用于传输 voice_call,因此使用 voice_call 通道并使用通话音量控制对于非通话应用程序。

我尝试将 WebRTC 源WebRtcAudioTrack中的 STREAM_VOICE_CALL 更改为 STREAM_MUSIC以使用流音乐音量,但唯一的变化是 Android 将其检测为音乐,但音量随通话音量而变化。

nim*_*adi 1

我找到了解决这个问题的方法。您必须更改 opensls 播放器才能发生这种情况

从这里改变这个

  // 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);
Run Code Online (Sandbox Code Playgroud)

对此

  // 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);
Run Code Online (Sandbox Code Playgroud)

也在这里这样做