基于WebRtc在Android端实现屏幕共享
注:本文默认你已经掌握了如何用WebRtc建立视频连接。如果没有,请参考https://www.jianshu.com/p/eb5fd116e6c8,这里将不再赘述。第一步:向系统发起屏幕截取请求if(Build.VERSION.SDK_INT < 21){showShortToast("您的手机不支持这个功能");return;}Media...
·
注:本文默认你已经掌握了如何用WebRtc建立视频连接。如果没有,请参考https://www.jianshu.com/p/eb5fd116e6c8,这里将不再赘述。
第一步:向系统发起屏幕截取请求
if(Build.VERSION.SDK_INT < 21){
showShortToast("您的手机不支持这个功能");
return;
}
MediaProjectionManager manager = (MediaProjectionManager)getSystemService(MEDIA_PROJECTION_SERVICE);
if(manager == null){
showShortToast("截屏服务不可用");
return;
}
Intent intent = manager.createScreenCaptureIntent();
startActivityForResult(intent,REQ_REMOTE_HELP);
执行以上代码后,会出现弹窗提示用户要开始截屏,用户点击同意后,回调到onActivityResult。
第二步:用第一步得到的 Intent 创建VideoCapturer
//上一步会回调到这个方法。
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == REQ_REMOTE_HELP && resultCode == RESULT_OK){
captureIntent = data; //在这里保存data
}
}
//创建VideoCapture
VideoCapturer videoCapturer = new ScreenCapturerAndroid(captureIntent, new MediaProjection.Callback() {
@Override
public void onStop() {
super.onStop();
}
});
第三步:创建视频源并初始化
VideoSource videoSource = peerConnectionFactory.createVideoSource(videoCapturer.isScreencast());
videoCapturer.initialize(surfaceTextureHelper, getApplicationContext(),videoSource.getCapturerObserver());
videoCapturer.startCapture(480, 640, 30);
其它过程与https://www.jianshu.com/p/505bb98aaea7 相同,请参考该文。
更多推荐
所有评论(0)