我正在使用Media Projection API捕获屏幕,并使用webrtc将流发送到kurento服务器。流式传输时缺少帧,因此视频无法正常播放。
我的代码如下。
开始捕获屏幕
MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getApplication()
.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(),
CAPTURE_PERMISSION_REQUEST_CODE);
处理活动结果的结果
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode != CAPTURE_PERMISSION_REQUEST_CODE)
return;
mediaProjectionPermissionResultCode = resultCode;
mediaProjectionPermissionResultData = data;
startCall();//start webrtc call is for stream
}
流的视频捕获代码
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private VideoCapturer createScreenCapturer() {
if (mediaProjectionPermissionResultCode != Activity.RESULT_OK) {
return null;
}
VideoCapturer videoCapturer = new ScreenCapturerAndroid
(mediaProjectionPermissionResultData, new MediaProjection.Callback() {
@Override
public void onStop() {
Log.d(TAG, "User revoked permission to capture the screen.");
}
});
if (videoCapturer != null) {
return videoCapturer;
}
return null;
}
当我将来源更改为相机流时,它可以完美工作。
请给我屏幕捕获流的解决方案。