- 有可能!
- 可以按照以下说明完成。
我已将 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