【问题标题】:System audio streaming on Android over Webrtc通过 Webrtc 在 Android 上流式传输系统音频
【发布时间】:2022-04-02 17:35:49
【问题描述】:

我正在尝试使用 Webrtc 在 Android 上构建屏幕共享应用程序。我可以使用 mediaprojection+webrtc 共享屏幕,但无法共享系统音频。 Mediaprojection 在 AudioPlaybackCaptureConfiguration 的帮助下增加了对从 API 29 (Android 10) 捕获系统音频的支持。但是,当我将音频记录中的音频源分配给 peerconnection 音轨时,应用程序崩溃了。

   MediaProjectionManager mediaProjectionManager =
            (MediaProjectionManager) mContext.getApplicationContext().getSystemService(
                    Context.MEDIA_PROJECTION_SERVICE);

    MediaProjection sMediaProjection =
            mediaProjectionManager.getMediaProjection(
                    MPResultCode,
                    MPData
            );

    AudioPlaybackCaptureConfiguration config = new AudioPlaybackCaptureConfiguration.Builder(sMediaProjection)
            .addMatchingUsage(AudioAttributes.USAGE_MEDIA)
            .build();

    AudioFormat audioFormat = new AudioFormat.Builder()
            .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
            .setSampleRate(8000)
            .setChannelMask(AudioFormat.CHANNEL_IN_MONO)
            .build();

    AudioRecord audioRecord = new AudioRecord.Builder()
            .setAudioFormat(audioFormat)
            .setBufferSizeInBytes(BUFFER_SIZE_IN_BYTES)
            .setAudioPlaybackCaptureConfig(config)
            .build();

    AudioSource audioSource = new AudioSource(audioRecord.getAudioSource());
    AudioTrack localAudioTrack = factory.createAudioTrack("AudioTrack", audioSource1);
    localAudioTrack.setEnabled(true);
    mLocalMediaStream.addTrack(localAudioTrack); 

如果我将音频源配置如下,则流式麦克风音频工作正常

    AudioSource audioSource = factory.createAudioSource(new MediaConstraints()); 

如何使用 AudioRecord 对象配置 webrtc 音轨?

【问题讨论】:

  • 你能分享你在运行它时得到的崩溃日志吗?

标签: android webrtc android-mediaprojection webrtc-android mediaprojection


【解决方案1】:

我通过使用 WebRTC 框架解决了这个问题。让我解释一下它是如何工作的。在 WebRTC 堆栈中,音频记录在 WebRTCAudioRecord.java 上运行。如果您想使用系统音频,您需要将媒体投影对象传输到WebRTCAudioRecord.java。下面是实现的例子:https://github.com/ant-media/WebRTCAndroidSDK/pull/1你可以查看。欢迎任何意见。

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2020-11-01
    相关资源
    最近更新 更多