如何:Android OpenCV视频捕获与文件
How To: Android OpenCV VideoCapture with File
我正在尝试将视频传递给OpenCV VideoCapture类。但是,当我调用VideoCapture.isOpened()
方法时,它总是返回false
。我试过两种方法:
-
将视频文件保存到内部存储器,
context.getFilesDir()
=>/data/data/package_name/filess/VideoToAnalyze/Recording.mp4 -
以及一个到
environment.getExternalStorageDirectory()
=>sdcard/appName/Recording.mp4。
这里似乎什么都不管用。我的问题是如何将视频文件(或正确的文件路径)传递给VideoCapture OpenCV对象?我在下面发布了一些代码作为示例。请注意,我没有收到错误。文件总是被找到/存在,但当我调用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");
.....
这是一个老问题,但我还是遇到了同样的问题。
Opencv for Android仅支持AVI容器中的MJPEG编解码器。请参阅此
只是为了关闭它。。我下载了JavaCV。。包含.so文件到android项目中,然后使用FFMPEGFrameGrabber。
相关文章:
- 如何在 c++ 中通过 http 发送大型视频文件?
- 媒体基础将音频流添加到视频文件
- 帧提取 使用OpenCV的视频文件开头只有几秒钟
- 使用 OpenCV C++ 每 1 分钟创建新的视频文件
- 如何检查给定文件是否是C++中的有效视频文件?
- 媒体基础获得视频文件的精确帧(样本)计数
- 如何在不重写整个视频文件的情况下仅替换流中的一个数据框架?(ffmpeg)
- 创建可用的H.264视频文件
- 如何避免在 c++ 中使用 libssh scp 命令压缩从远程 ssh 下载的图像、音频和视频文件?
- 如何使用Windows Media Foundation直接将视频文件直接解码为Direct3D11纹理
- 无法从文件中读取视频,而可以从相机读取
- ARtoolkit加载从4k相机索尼捕获的视频文件
- 视频编写器功能不会使用 OpenCV-3.0.0 保存文件
- 读取视频文件"Open CV WARNING: Couldn't read movie file bird.avi"时出现问题
- 将视频文件的帧总数保存到.txt文件中
- 使用OpenCV从文件中更改视频捕获上的fps
- openCV读取.avi文件的视频捕获获取空框架
- 从OpenCV C 中的视频文件中检索每三个帧
- 使用来自视频文件或网络摄像头的 Kinect 面部跟踪
- 从文件OpenCV读取视频