我嘗試使用OpenCV的做到這一點:如何檢查給定文件是否是C++中的有效視頻文件?
std::string input_name = "<path to file>";
cv::VideoCapture cap(input_name);
if(!cap.isOpened()) printf("Invalid video\n");
然而,當我嘗試通過一個txt文件,VideoCapture成功地讀取它,原因不明。當我嘗試查找視頻中的幀數時,我在每次執行時都會獲得不同數量的幀。我也試過在文件中找到一個幀的寬度和高度,
cv::Mat Frame;
if(!cap.read(Frame)) printf("Cannot read frame\n");
else
{
printf("Frame width is %d\n", Frame.cols);
printf("Frame height is %d\n", Frame.rows);
}
它們的值分別是640和400。這是爲什麼發生?有沒有辦法檢查給定的文件是否是有效的視頻文件,最好使用OpenCV?
爲什麼你不能簡單地檢查擴展名? –
@ShawnMathew - 因爲擴展可以說謊嗎?它們不過是一種快速找出文件處理程序應該查找的元數據的手段。有些玩家可以算出來,儘管錯誤的延伸(他們只是抱怨)。 – StoryTeller
@ShawnMathew如果我找不到其他方法,我會這樣做。只是想知道這是否可以使用OpenCV – niranjantdesai