【发布时间】:2017-09-11 21:05:57
【问题描述】:
这是用 NativeScript 编码的,所以我会尽力使场景适应 Java。我创建了一个支持录制视频的应用内视频视图。
按如下方式完成:
首先我创建一个SurfaceView 来保存相机的预览:
this.mSurfaceView = new android.view.SurfaceView(this._context);
this.mHolder = this.mSurfaceView.getHolder();
this.mHolder.setType(android.view.SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
然后我创建一个Camera 的实例,并设置视频表面:
var mCamera = android.hardware.Camera;
var camera = mCamera.open(1);
this.camera = camera;
this.camera.setDisplayOrientation(90);
var parameters = camera.getParameters();
parameters.setRecordingHint(true);
if( parameters.isVideoStabilizationSupported() ){
parameters.setVideoStabilization(true);
}
camera.setParameters(parameters);
this.camera.setPreviewDisplay(_this.mHolder);
this.camera.startPreview();
this.camera.startFaceDetection();
现在,一切都很好。我在我想要的视图中有相机预览。颜色很好,我认为图像的纵横比也很好。
但是,当我开始录制时,就像我使用以下代码一样:
this.mediarecorder = new android.media.MediaRecorder();
// Step 1: Unlock and set camera to MediaRecorder
this.camera.unlock();
this.mediarecorder.setCamera(this.camera);
// Step 2: Set sources
this.mediarecorder.setAudioSource(android.media.MediaRecorder.AudioSource.CAMCORDER);
this.mediarecorder.setVideoSource(android.media.MediaRecorder.VideoSource.CAMERA);
//this.mediarecorder.setOutputFormat(android.media.MediaRecorder.OutputFormat.MPEG_4);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
this.mediarecorder.setProfile(android.media.CamcorderProfile.get(android.media.CamcorderProfile.QUALITY_HIGH));
// platform.screen.mainScreen.widthDIPs
// platform.screen.mainScreen.heightDIPs
// Step 4: Set output file
var fileName = "videoCapture_" + new Date() + ".mp4";
var path = android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_DCIM).getAbsolutePath() + "/Camera/" + fileName;
this.file = new java.io.File(path);
this.mediarecorder.setOutputFile(this.file.toString());
this.mediarecorder.setOrientationHint(270);
try {
this.mediarecorder.prepare();
this.mediarecorder.start();
} catch( ex ) {
console.log(ex);
}
然后,图像突然变暗,而我的脸(我尝试它时的焦点)变宽了。所以纵横比会发生变化,光照也会以某种方式发生变化。
我尝试在相机参数上设置 setPictureSize,在 MediaRecorder 上设置视频大小,但没有成功。对于灯光变化,我根本不知道发生了什么。现在我一直在谷歌搜索自己到天堂的一半,但仍然一无所获,所以我希望这里有人对下一步追求什么有任何提示?
【问题讨论】: