我正在尝试在相机视图中添加录制按钮。我正在使用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文件管理器应用程序中创建的文件时,它会显示正确的大小(因创建的文件不同而不同)但我无法打开它。我有“无法打开”的信息。 有没有人可能有一个可以解释这一点的想法?