我想將視頻傳遞給OpenCV VideoCapture類。但是,當我撥打VideoCapture.isOpened()
方法時,它始終返回false
。我曾嘗試兩種方法:如何:Android的OpenCV VideoCapture與文件
保存視頻文件到內部存儲器,
context.getFilesDir()
=> /data/data/package_name/files/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");
.....
也只是想說明..我試着使用一些JNI代碼,而不是...仍然沒有運氣...試圖/以及\ .. jboolean Java_package_name_videoCapture (JNIEnv的* ENV,jobject T) { 簡歷:: VideoCapture * videoCapture = new cv :: VideoCapture(「\\ data \\ data \\ matterandform.net.bevel_android \\ files \\ VideoToAnalyze \\ BevelRecording1.mp4」); return videoCapture-> isOpened(); } – Arjun