【问题标题】:Android screen sharing using WebRTC使用 WebRTC 的 Android 屏幕共享
【发布时间】:2014-11-19 09:47:37
【问题描述】:

我听说过使用 WebRTC 在桌面上共享屏幕。但是对于安卓来说,信息似乎不多。

我的问题是:

  1. 是否可以在 Android 上使用 WebRTC 进行屏幕共享?我的意思是我可以将当​​前屏幕投射到另一部手机的屏幕上。
  2. 如果 1 是 Yes,我该如何实现?

谢谢。

【问题讨论】:

  • 您想了解原生应用还是 Android 版 Chrome/Firefox?
  • @BenjaminTrent:感谢您的回复。我的意思是原生应用程序。 :)
  • Paul 你找到这个问题的答案了吗?您是否尝试过具有 MediaProjection API 以使 Android 应用程序捕获屏幕的 Android 5.0?
  • @SojharoMangi:对不起,我不再关注这个项目了。 (这只是我空闲时间的项目)

标签: android webrtc


【解决方案1】:
  1. 有可能!
  2. 可以按照以下说明完成。

我已将 ScreenShareRTC 与 ProjectRTC 结合使用,以将屏幕内容流式传输到浏览器,质量不错,延迟相当低(约 100 毫秒)。

我在下面添加了一个示例,展示了如何将屏幕共享配置为视频源并将其添加为流中的轨道。

获取 VideoCapturer

@TargetApi(21)
private VideoCapturer createScreenCapturer() {
    if (mMediaProjectionPermissionResultCode != Activity.RESULT_OK) {
        report("User didn't give permission to capture the screen.");
        return null;
    }
    return new ScreenCapturerAndroid(
            mMediaProjectionPermissionResultData, new MediaProjection.Callback() {
        @Override
        public void onStop() {
            report("User revoked permission to capture the screen.");
        }
    });
}

初始化捕获器并将曲目添加到本地媒体流

private void initScreenCapturStream() {
    mLocalMediaStream = factory.createLocalMediaStream("ARDAMS");
    MediaConstraints videoConstraints = new MediaConstraints();
    videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxHeight", Integer.toString(mPeerConnParams.videoHeight)));
    videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxWidth", Integer.toString(mPeerConnParams.videoWidth)));
    videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxFrameRate", Integer.toString(mPeerConnParams.videoFps)));
    videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("minFrameRate", Integer.toString(mPeerConnParams.videoFps)));

    mVideoSource = factory.createVideoSource(videoCapturer);
    videoCapturer.startCapture(mPeerConnParams.videoWidth, mPeerConnParams.videoHeight, mPeerConnParams.videoFps);
    VideoTrack localVideoTrack = factory.createVideoTrack(VIDEO_TRACK_ID, mVideoSource);
    localVideoTrack.setEnabled(true);
    mLocalMediaStream.addTrack(factory.createVideoTrack("ARDAMSv0", mVideoSource));
    AudioSource audioSource = factory.createAudioSource(new MediaConstraints());
    mLocalMediaStream.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource));

    mListener.onStatusChanged("STREAMING");
}

要了解更多信息,这可能是一个不错的起点。它是一个连接到 ProjectRTC 信令服务器并将屏幕作为视频共享的 Android 项目。我发现它很有帮助!

Android屏幕共享项目(Android客户端-Java) https://github.com/Jeffiano/ScreenShareRTC

ProjectRTC(节点服务器) https://github.com/pchab/ProjectRTC

【讨论】:

  • 嗨。他们有最新的 github 演示吗?您添加的 github 链接非常旧,并且回购多年没有更新:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多