我知道这个问题之前已被问过很多次了.一年多前我曾找过它,但没有找到任何东西,所以如果有任何新的想法/方法或黑客,再次发布这个问题.
我希望能够在Android设备中捕获来自两个摄像头(正面和背面)的视频.
我现在唯一想到的是每隔0.1秒如何在正面和背面之间切换,但是我从来没有能够编码.请给我任何人的帮助.
另一个想法是 - 视频通常以每秒15或30帧的速度捕获.假设它是每秒30帧.如果有一种方法可以将这些帧交替到正面和背面,那么我们可以在前面每秒15帧,在后面视频每秒15帧.这可能吗?如果是,那怎么样?请建议.音频怎么了?也许我们可以将音频限制为只有一个视频录制(正面或背面).
我在访问这两个(前后摄像头的同时)时遇到了麻烦.当打开一个摄像头时,它可以工作.当我先关闭然后再打开它时,它会起作用.当我试图打开第二台摄像机而第一台摄像机仍然显示图像时,它会出现以下异常.
E/AndroidRuntime(32325): FATAL EXCEPTION: main
E/AndroidRuntime(32325): java.lang.RuntimeException: Fail to connect to camera service
E/AndroidRuntime(32325): at android.hardware.Camera.native_setup(Native Method)
E/AndroidRuntime(32325): at android.hardware.Camera.<init>(Camera.java:265)
E/AndroidRuntime(32325): at android.hardware.Camera.open(Camera.java:226)
E/AndroidRuntime(32325): at com.example.videostreamer.MainActivity$CameraHandler.start(MainActivity.java:116)
E/AndroidRuntime(32325): at com.example.videostreamer.MainActivity$2.onClick(MainActivity.java:74)
E/AndroidRuntime(32325): at android.view.View.performClick(View.java:2532)
E/AndroidRuntime(32325): at android.widget.CompoundButton.performClick(CompoundButton.java:99)
Run Code Online (Sandbox Code Playgroud)
在文档中我发现了一个短语:
public static Camera open(int cameraId)
从以下版本开始:API Level 9创建一个新的Camera对象以访问特定的硬件摄像头.使用完相机后必须调用release(),否则它将保持锁定状态并且对其他应用程序不可用. 您的应用程序一次只能为一个特定的硬件摄像头激活一个Camera对象.
..但我只有一个摄像头对象用于一个硬件摄像头,我想为第二个设备创建第二个对象.
我知道这个问题之前已被问过,但已经很久了.再次提出这个问题来收集任何新的黑客/想法/方法.
我需要同时访问前后摄像头.
到目前为止,我已经尝试使用Android相机API(双镜头 - 由Jens)和camera2 API实现.两种实现在具有硬件支持的设备(双图像信号处理器)上都可以正常工作,用于双摄像头功能.我已经测试过,两种实现在HTC one M8(Snapdragon 801)和Xiaomi Mi4(Snapdragon 801)上都能正常工作.
即使它具有硬件功能(Exynos 7420具有双ISP),这两种实现都在三星s6上失败.此外,S6上的默认相机应用程序支持双相机模式.
关于这个的任何想法/建议?
提前致谢.
更新:2015年11月18日 - >尝试使用三星Galaxy Camera SDK,但仍然没有运气.
我正在做一个按钮点击扫描条形码的应用程序,它可以正常工作到Lollipop版本.当我来到棉花糖时,它停止了工作.这是错误:
camerabase连接到相机0时发生错误
它迫使我通过以下方式开启许可:
设置 - >应用程序 - >我的应用程序 - >相机.
我的问题是如何在Marshmallow中自动允许我的应用程序使用相机,或者要求用户在运行时打开相机.屏幕截图:
android barcode android-camera android-6.0-marshmallow runtime-permissions