Merge pull request #696 from thegobot/master

CAMERA_ERROR_EVICTED fix
camera2
Leo Ma 6 years ago committed by GitHub
commit 5e946797f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -232,6 +232,15 @@ public class MainActivity extends AppCompatActivity implements RtmpHandler.RtmpL
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
@Override
protected void onStart() {
super.onStart();
if(mPublisher.getCamera() == null){
//if the camera was busy and available again
mPublisher.startCamera();
}
}
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();

@ -288,7 +288,7 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
} }
Camera.Parameters params = mCamera.getParameters(); Camera.Parameters params = mCamera.getParameters();
params.setPictureSize(mPreviewWidth, mPreviewHeight); //params.setPictureSize(mPreviewWidth, mPreviewHeight);
params.setPreviewSize(mPreviewWidth, mPreviewHeight); params.setPreviewSize(mPreviewWidth, mPreviewHeight);
int[] range = adaptFpsRange(SrsEncoder.VFPS, params.getSupportedPreviewFpsRange()); int[] range = adaptFpsRange(SrsEncoder.VFPS, params.getSupportedPreviewFpsRange());
params.setPreviewFpsRange(range[0], range[1]); params.setPreviewFpsRange(range[0], range[1]);
@ -347,7 +347,7 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
} }
} }
private Camera openCamera() { protected Camera openCamera() {
Camera camera; Camera camera;
if (mCamId < 0) { if (mCamId < 0) {
Camera.CameraInfo info = new Camera.CameraInfo(); Camera.CameraInfo info = new Camera.CameraInfo();
@ -374,6 +374,15 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
try { try {
camera = Camera.open(mCamId); camera = Camera.open(mCamId);
camera.setErrorCallback(new Camera.ErrorCallback(){
@Override
public void onError(int error, Camera camera) {
//may be Camera.CAMERA_ERROR_EVICTED - Camera was disconnected due to use by higher priority user
stopCamera();
}
});
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
} }
@ -431,9 +440,13 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
public void stopTorch() { public void stopTorch() {
if (mCamera != null) { if (mCamera != null) {
try {
Camera.Parameters params = mCamera.getParameters(); Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params); mCamera.setParameters(params);
}catch (Exception e){
e.printStackTrace();
}
} }
} }

@ -246,6 +246,10 @@ public class SrsPublisher {
return mCameraView.getCameraId(); return mCameraView.getCameraId();
} }
public Camera getCamera() {
return mCameraView.getCamera();
}
public void setPreviewResolution(int width, int height) { public void setPreviewResolution(int width, int height) {
int resolution[] = mCameraView.setPreviewResolution(width, height); int resolution[] = mCameraView.setPreviewResolution(width, height);
mEncoder.setPreviewResolution(resolution[0], resolution[1]); mEncoder.setPreviewResolution(resolution[0], resolution[1]);

Loading…
Cancel
Save