VideoCapture无法在使用C ++的Android上运行

时间:2017-05-18 22:50:47

标签: android c++ opencv android-ndk

我的Android设备上保存了一个视频文件。

使用getPath()函数我得到了“sdcard / video_app / sample_video.avi”。

我现在正尝试在我的OpenCV C ++代码中使用此视频文件(我正在使用NDK和JNI):

VideoCapture capture("sdcard/video_app/sample_video.avi");

if(capture.isOpened()){
    //return true
   }else{
    //return false
    }

我补充说:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

它总是返回false。我究竟做错了什么 ?我读到Android上的OpenCV只支持avi容器中的MJPEG编解码器,所以我使用这种视频文件,但它仍然无法正常工作。

编辑:

我改变了路径:

VideoCapture capture("/storage/emulated/0/turning_pages.avi"); 

此路径是来自Environment.getExternalDirectory.getPath()的电话的回复 路径是正确的,我用这个验证了它:

File file = new File("/storage/emulated/0/turning_pages.avi");
if(file.exists()){
     //returns true
  }

我已经做了一些测试,imread和imwrite正在使用类似的路径,我可以得出结论,VideoCapture的问题不是来自路径。

Mat m = imread("/storage/emulated/0/sbuinex21fyy.jpg"); 

if(!m.empty()){
   //returns true
   } 

imwrite("/storage/emulated/0/sbuinex21fyy.jpg", m); 

然后,我可以在设备存储中看到图片的副本。

0 个答案:

没有答案