如何:Android 带文件的 OpenCV VideoCapture
How To: Android OpenCV VideoCapture with File
我正在尝试将视频传递给 OpenCV VideoCapture class。但是,当我调用 VideoCapture.isOpened()
方法时,它总是 returns false
。我尝试了两种方法:
正在将视频文件保存到内存中,context.getFilesDir()
=> /data/data/package_name/files/VideoToAnalyze/Recording.mp4
还有一个到environment.getExternalStorageDirectory()
=> sdcard/appName/Recording.mp4。
这里似乎没有任何效果。我的问题是如何将视频文件(或正确的文件路径是什么)传递给 VideoCapture OpenCV 对象?我在下面发布了一些代码作为示例。请注意,我没有收到错误。该文件始终是 found/exists,但是当我调用 isOpened()
时,我总是得到 false
.
更新:
所以看起来网络上的每个人都在说 OpenCV(我使用的是 3.10)缺少 ffmpeg 后端,因此无法处理视频。我想知道有没有人知道这是事实??有没有解决办法。几乎所有其他逐帧处理视频的替代方法都非常慢。
String x = getApplicationContext().getFilesDir().getAbsolutePath();
File dir = new File(x + "/VideoToAnalyze");
if(dir.isDirectory()) {
videoFile = new File(dir.getAbsolutePath() + "/Recording1.mp4");
} else {
// handle error
}
if(videoFile.exits(){
String absPath = videoFile.getAbsolutePath();
VideoCapture vc = new VideoCapture();
try{
vc.open(absPath);
} catch (Exception e) {
/// handle error
}
if(!vc.isOpened(){
// this code is always hit
Log.v("VideoCapture", "failed");
} else {
Log.v("VideoCapture", "opened");
.....
只是为了关闭这个 .. 我下载了 JavaCV .. 将 .so 文件包含到 android 项目中,然后使用了 FFMPEGFrameGrabber。
这是一个老问题,但我也有同样的问题。
用于 Android 的 Opencv 仅支持 AVI 容器中的 MJPEG 编解码器。 See this
我正在尝试将视频传递给 OpenCV VideoCapture class。但是,当我调用 VideoCapture.isOpened()
方法时,它总是 returns false
。我尝试了两种方法:
正在将视频文件保存到内存中,
context.getFilesDir()
=> /data/data/package_name/files/VideoToAnalyze/Recording.mp4还有一个到
environment.getExternalStorageDirectory()
=> sdcard/appName/Recording.mp4。
这里似乎没有任何效果。我的问题是如何将视频文件(或正确的文件路径是什么)传递给 VideoCapture OpenCV 对象?我在下面发布了一些代码作为示例。请注意,我没有收到错误。该文件始终是 found/exists,但是当我调用 isOpened()
时,我总是得到 false
.
更新: 所以看起来网络上的每个人都在说 OpenCV(我使用的是 3.10)缺少 ffmpeg 后端,因此无法处理视频。我想知道有没有人知道这是事实??有没有解决办法。几乎所有其他逐帧处理视频的替代方法都非常慢。
String x = getApplicationContext().getFilesDir().getAbsolutePath();
File dir = new File(x + "/VideoToAnalyze");
if(dir.isDirectory()) {
videoFile = new File(dir.getAbsolutePath() + "/Recording1.mp4");
} else {
// handle error
}
if(videoFile.exits(){
String absPath = videoFile.getAbsolutePath();
VideoCapture vc = new VideoCapture();
try{
vc.open(absPath);
} catch (Exception e) {
/// handle error
}
if(!vc.isOpened(){
// this code is always hit
Log.v("VideoCapture", "failed");
} else {
Log.v("VideoCapture", "opened");
.....
只是为了关闭这个 .. 我下载了 JavaCV .. 将 .so 文件包含到 android 项目中,然后使用了 FFMPEGFrameGrabber。
这是一个老问题,但我也有同样的问题。
用于 Android 的 Opencv 仅支持 AVI 容器中的 MJPEG 编解码器。 See this