Android Webrtc 将流更改为 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,false);

这样做here too