Dee*_*pzz 8 camera android mediarecorder
我正在使用媒体录制器在Android应用程序中录制视频.
mMediaRecorder.setCamera(mServiceCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
//mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
String file_name = Environment.getExternalStorageDirectory().getPath() +"/myVideo.mp4";
mMediaRecorder.setOutputFile(file_name);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mMediaRecorder.prepare();
mMediaRecorder.start();
Run Code Online (Sandbox Code Playgroud)
问题就在于此
mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
Run Code Online (Sandbox Code Playgroud)
在HTC和Xperia中,setVideoSize工作正常(仅当我不评论此行时才会起作用).但是在Nexus和Note中,setVideoSize将不起作用(仅当我评论此行时才会起作用).
我应该怎么做才能让应用程序在所有这些设备中正确运行?
您需要了解预览和实际捕获的视频是两个不同的东西,同样预览大小和视频大小是两个不同的参数。您在取景器中看到的本质上是预览,但并不是实际记录的内容。
启动相机时,您可以设置相机的预览尺寸。但您必须查询支持的预览尺寸并应设置其中之一。
相机camera=camera.open(); 列表 psizes =camera.getParameters() .getSupportedPreviewSizes();
设置好预览后,就可以使用MediaRecorder开始录制,并且可以将视频大小设置为媒体录制器,这就是将捕获的视频的实际大小。同样,您应该设置支持的视频大小之一。
列表大小=camera.getParameters().getSupportedVideoSizes();
然后,您可以将其中之一设置为媒体记录器
mediaRecorder.setVideoSize(videoWidth, videoHeight);
Run Code Online (Sandbox Code Playgroud)
因此,请记住始终检查支持的尺寸,否则应用程序肯定会崩溃。
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |