启用相机时预览屏幕中的图像格式是什么?
是RGB?
还是YUV?
还是其他人?
所以当我拍照时,我基本上要求Andriod将屏幕上的任何内容从YUV
格式转换为JPEG
?
当我录制视频时,Android会将该格式转换为mp4
?
答案 0 :(得分:2)
是NV21。请参阅online document。 要将数据保存为JPEG,您可以执行以下操作:
YuvImage im = new YuvImage(preview_data, ImageFormat.NV21, preview_width, preview_height, null);
int quality = 90;
Rect rect = new Rect(0, 0, preview_width, preview_height);
FileOutputStream output = new FileOutputStream("/sdcard/test.jpg");
im.compressToJpeg(rect, quality, output);
output.flush();
output.close();
答案 1 :(得分:0)
还有另一种方式,我如何做同样的事,可以帮助你: 拍照:
初始化相机并设置onPictureTaken方法。
相机相机= Camera.open(); if(camera!= null) { camera.takePicture(null,null,jpeg); }
现在使用名称" jpeg"实现Camera.PictureCallback,您将以JPEG格式获取捕获的图像
在onSurfaceChanged方法中设置所需的图像格式
public void surfaceChanged(SurfaceHolder holder,int format,int w,int h) { if(holder!= null&& camera!= null) { camera.stopPreview(); Camera.Parameters parameters = camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); camera.setParameters(参数); camera.setPreviewDisplay(保持器); camera.startPreview(); } }
录制视频
初始化相机。
相机相机= Camera.open();
init媒体录制器并在录制器上设置所需的视频格式
if(camera!= null) { 尝试{ camera.stopPreview();
MediaRecorder recorder = new MediaRecorder();
recorder.setCamera(camera);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.prepare();
}