Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Affdex Android SDK-保存并使用CameraDetector_Android_Android Camera_Affdex Sdk - Fatal编程技术网

Affdex Android SDK-保存并使用CameraDetector

Affdex Android SDK-保存并使用CameraDetector,android,android-camera,affdex-sdk,Android,Android Camera,Affdex Sdk,我最想知道的是,是否有一个根本的冲突,我不能与图书馆共享同一个资源,如果是这样,我需要采取不同的方法 我的目标是让低质量的视频与检测器的元数据同时保存,这样我就可以进行一些后处理和切片,而不会有太多的延迟 基于— 我一直在初始化一个MediaRecorder,但是如果我在检测器之前启动它,它会保存一个黑屏,如果我在检测器之后启动它,它会在启动时崩溃(代码为-19)。探测器正在连接预览,可能就是这样 我添加了一些按钮来控制这些功能: protected void cameraInit() {

我最想知道的是,是否有一个根本的冲突,我不能与图书馆共享同一个资源,如果是这样,我需要采取不同的方法

我的目标是让低质量的视频与检测器的元数据同时保存,这样我就可以进行一些后处理和切片,而不会有太多的延迟

基于—

我一直在初始化一个MediaRecorder,但是如果我在检测器之前启动它,它会保存一个黑屏,如果我在检测器之后启动它,它会在启动时崩溃(代码为-19)。探测器正在连接预览,可能就是这样

我添加了一些按钮来控制这些功能:

protected void cameraInit() {
    String state = Environment.getExternalStorageState();
    if (!Environment.MEDIA_MOUNTED.equals(state)) {
        Log.d(LOG_TAG, "Drive not mounted - cannot write video");
        return;
    }

    File file = new File(getExternalFilesDir(Environment.DIRECTORY_MOVIES), "demo.gp3");

    Log.d(LOG_TAG, String.format("Camera Initializing. Setting output to: %s", file.getAbsolutePath()));

    // Set sources
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    // Set profile
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));

    // Set output profile
    recorder.setOutputFile(file.getAbsolutePath());

    // Set preview output
    recorder.setPreviewDisplay(cameraPreview.getHolder().getSurface());



    try {
        this.recorder.prepare();
    } catch (IOException e) {
        Log.e(LOG_TAG, "IO exception on camera Initialization");
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // This is thrown if the previous calls are not called with the
        // proper order
        Log.e(LOG_TAG, "Failed to initialize things properly :(  ");
        e.printStackTrace();
    }
}

protected void cameraStart() {
    Log.d(LOG_TAG, "Camera Start");
    this.recorder.start();
}

protected void cameraStop() {
    Log.d(LOG_TAG, "Camera Stop");
    this.recorder.stop();
}

Afdex SDK的CameraDetector需要访问相机以获取其预览帧并对其进行处理,因此如果MediaRecorder控制了相机,则该功能将无法工作


也许你最好的办法是从相机中获取预览帧,将它们传送到Afdex FrameDetector进行处理,并通过MediaCodec和MediaMuxer将它们保存到视频文件中,尽管我还没有尝试过。

Hm,我想知道我是否可以将mediarecorder设置为使用与CameraDetector相同的表面并从中录制?我不这样认为,正如我所记得的,我认为当mediarecorder开始录制时,它会控制相机,因此CameraDetector在该点之后不会获得预览帧。