栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

录制视频时启用相机闪光灯

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

录制视频时启用相机闪光灯

我遇到了类似的问题。用户应能够根据光线情况在录制过程中更改闪光模式以满足他们的需求。经过一些调查研究,我得出以下解决方案:

我假设您已经设置了正确的SurfaceView和带有必要回调的SurfaceHolder。我所做的第一件事是提供以下代码(未声明的变量是全局变量):

public void surfaceCreated(SurfaceHolder holder) {    try {        camera = Camera.open();        parameters = camera.getParameters();        parameters.setFlashMode(Parameters.FLASH_MODE_OFF);        camera.setParameters(parameters);        camera.setPreviewDisplay(holder);        camera.startPreview();        recorder = new MediaRecorder();    } catch (IOException e) {        e.printStackTrace();    }       }

我的下一步是初始化和准备记录器:

private void initialize() {    camera.unlock();    recorder.setCamera(camera);    recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);    recorder.setAudioEnprer(MediaRecorder.AudioEnprer.AAC);    recorder.setVideoEnprer(MediaRecorder.VideoEnprer.H264);    recorder.setVideoframeRate(20);    recorder.setOutputFile(filePath);    try {        recorder.prepare();    } catch (IllegalStateException e) {        e.printStackTrace();        finish();    } catch (IOException e) {        e.printStackTrace();        finish();    }}

重要的是要注意,在媒体记录器的整个初始化过程之前,必须先调用camera.unlock()。也就是说,还要注意每个set属性的正确顺序,否则在调用prepare()或start()时会收到IllegalStateException。在录制方面,我会这样做。通常,这将由view元素触发:

public void record(View view) {    if (recording) {        recorder.stop();        //TODO: do stuff....        recording = false;    } else {        recording = true;        initialize();        recorder.start();    }}

所以现在,我终于可以正确录制了。但是那个闪光灯是什么?最后但并非最不重要的是,幕后的魔力来自这里:

public void flash(View view) {    if(!recording) {        camera.lock();    }    parameters.setFlashMode(parameters.getFlashMode().equals(Parameters.FLASH_MODE_TORCH) ? Parameters.FLASH_MODE_OFF : Parameters.FLASH_MODE_TORCH);    camera.setParameters(parameters);    if(!recording) {        camera.unlock();    }}

每当我通过onClick动作调用该方法时,即使在录制过程中,我也可以更改闪光模式。只需注意正确锁定相机即可。在录制过程中,如果媒体记录仪要求锁定,则无需再次锁定/解锁摄像机。它甚至不起作用。已在具有Android
4.1.2版的Samsung Galaxy S3上进行了测试。希望这种方法有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号