我正在尝试使用OpenCV
和一些重叠数据录制视频。我已将OpenCV
添加到我的项目中并成功进行了相机预览。在搜索我如何录制视频时,我遇到了JavaCV
。 JavaCV
有一个称为RecordActivity
的sapmle活动来演示视频录制。它会动态添加CameraView
代码并获取相机帧,并将其记录在onPreviewFrame
的{{1}}方法中。你可以在这里看到完整的代码:
我想要做的是在CameraView
界面的onCameraFrame
metod中录制视频,而不是CvCameraViewListener2
的{{1}}元素。
onPreviewFrame
来自RecordAvtivity.java的JavaCV记录代码块
PreviewCallback
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
final Mat rgba = inputFrame.rgba();
Core.flip(rgba, rgba, 1);
// Overlay some text and record video here.
return rgba;
}
需要数据为public void onPreviewFrame(byte[] data, Camera camera) {
if (audioRecord == null || audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {
startTime = System.currentTimeMillis();
return;
}
int i = imagesIndex++ % images.length;
Frame yuvImage = images[i];
timestamps[i] = 1000 * (System.currentTimeMillis() - startTime);
/* get video data */
if (yuvImage != null && recording) {
((ByteBuffer) yuvImage.image[0].position(0)).put(data);
try {
Log.v(TAG, "Writing Frame");
long t = 1000 * (System.currentTimeMillis() - startTime);
if (t > recorder.getTimestamp()) {
recorder.setTimestamp(t);
}
recorder.record(yuvImage);
} catch (FFmpegFrameRecorder.Exception e) {
Log.v(TAG, e.getMessage());
e.printStackTrace();
}
}
}
,但我有JavaCV
个对象。我需要有效地介于它们之间。
我该怎么做?
更新
我使用以下解决方案来解决我的初始问题
byte[]
但现在我收到了以下错误:
Mat
我已经尝试过以下问题的解决方案,但它不起作用:
JavaCV configuration in Android Studio
我也尝试过JavaCV的手动和gradle安装,但没有一个工作。
我正在使用:
答案 0 :(得分:0)
将这些行添加到依赖项
(2) - B
并在android {}
中添加packagingOptionscompile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-arm'
compile 'org.bytedeco.javacpp-presets:ffmpeg:2.8.1-1.1:android-arm'
并将这些行添加到packagingOptions
packagingOptions{}
它为我工作。希望它对你有所帮助。