androidwebrtcaudio-streamingwebrtc-android

Android Webrtc change stream to STREAM_MUSIC


I have created a WebRTC session from one device to another, the device should be able to control the volume for music stream, but WebRTC is originally designed to stream voice_call so is using the voice_call channel and using the call volume control is not good behavior for non-call app.

I tried to change STREAM_VOICE_CALL to STREAM_MUSIC in WebRTC source WebRtcAudioTrack to use the stream music volume but the only change was android is detecting it as music but volume change with call volume.


Solution

  • I found the solution to this. You have to change the opensls player for this to happen

    change this 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);
    

    to this

      // 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);
    

    do this here too