Android OpenCV录制视频

时间:2017-06-06 15:01:40

标签: android opencv video recorder

我正在尝试在相机视图中添加录制按钮。我正在使用CameraBridgeViewBase与OpenCV建立链接。我也使用VideoWriter录制我的视频。这是我的代码:

在onCreate()方法中,我设置了记录按钮:

   videoRecord.setOnClickListener(new View.OnClickListener(){

        public void onClick(View arg0){

            if (recording) {
                recording = false;
                focus.stop();
            } else {
                recording = true;
                focus.setBase(SystemClock.elapsedRealtime()); // remet le compteur à 0
                focus.start();
                recordfilepath();
                java.util.Date date= new java.util.Date();
                String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(date.getTime());
                File file = new File(recordfilepath(), "VID_" + timeStamp + ".avi");
                Log.d(TAG, "file : " + file);
                try {
                    if(!file.exists()){
                        file.createNewFile();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                filepath = file.getAbsolutePath();
                //VideoWriter mVideoWriter = new VideoWriter(recordfilepath(), VideoWriter.fourcc('M','J','P','G'), 25.0D, mRgba.size());
            }
        }
    });

我有一个recordfilepath()方法:

private String recordfilepath() {

    File sddir = Environment.getExternalStorageDirectory();
    File vrdir = new File(sddir, "LiveStick");
    if(!vrdir.exists())
    {
        vrdir.mkdir();
    }
    String filepath = vrdir.getAbsolutePath();
    return filepath;
}

最后在onCameraFrame()中我使用了VideoWriter:

if(recording){
       // Log.d(TAG, "filepath : " + filepath);
        if (mVideoWriter == null) {
            mVideoWriter = new VideoWriter(filepath, VideoWriter.fourcc('M', 'J', 'P', 'G'), 30.0, mRgba.size());
            Log.d(TAG,"mVideoWriter good : " + mVideoWriter);
            mVideoWriter.open(filepath, VideoWriter.fourcc('M', 'J', 'P', 'G'), 30.0, mRgba.size());
            Log.i(TAG, "onCameraFrame: recordFilePath" + filepath);
        }
        if (!mVideoWriter.isOpened()) {
            Log.w(TAG, "onCameraFrame: open");
            mVideoWriter.open(filepath, VideoWriter.fourcc('M', 'J', 'P', 'G'), 30.0, mRgba.size());
        }
        mVideoWriter.write(mRgba);
    } else {
        if (mVideoWriter != null) {
            mVideoWriter.release();
            Log.d(TAG,"mVideoWriter release");
        }
    }

所有日志工作所以我认为我的videoWriter没问题。但我的问题是,当我去检查在Android文件管理器应用程序中创建的文件时,它会显示正确的大小(因创建的文件不同而不同)但我无法打开它。我有“无法打开”的信息。 有没有人可能有一个可以解释这一点的想法?

0 个答案:

没有答案