我有一个问题:如何在 Android 中加载存储在设备中的视频文件,以及如何将其拆分为帧?我正在使用 IntelliJ,我想将视频分割成帧,以便使用一些图像处理技术(使用 OpenCv for Android 库)来处理它们。
问问题
5599 次
2 回答
1
您不需要为此使用 OpenCV。您可以使用SDK 提供的MediaMetaDataRetreiver类。它提供了从各种媒体文件中提取元数据的方法。您可以尝试以下方法:
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(file.getAbsolutePath());
imgView.setImageBitmap(retriever.getFrameAtTime(TIME_OFFSET,MediaMetadataRetriever.OPTION_CLOSEST));
TIME_OFFSET
以微秒为单位。
于 2013-09-12T08:20:01.900 回答
0
在 OpenCV 中抓取视频帧非常简单。OpenCV 网站上有很多例子。然而关键是在安卓上设置opencv。您可以按照此链接在 Android 上开始使用 Opencv。
一旦你在安卓上安装了opencv。您可以轻松地在 Mat 结构中加载视频文件和抓取帧,然后对其进行一些处理。
这是示例之一。它需要一些修改才能在安卓上运行它。我认为您需要为此在 andriod 上使用 NDK。
int main(int argc, char*argv[])
{
char *my_file = "C:\\vid_an2\\desp_me.avi";
std::cout<<"Video File "<<my_file<<std::endl;
cv::VideoCapture input_video;
if(input_video.open(my_file))
{
std::cout<<"Video file open "<<std::endl;
}
else
{
std::cout<<"Not able to Video file open "<<std::endl;
}
namedWindow("My_Win",1);
namedWindow("Segemented", 1);
Mat cap_img;
for(;;)
{
input_video >> cap_img;
imshow("My_Win", cap_img);
waitKey(0);
}
return 0;
}
于 2013-09-12T08:18:36.750 回答