无法使用HDFS(Hadoop)上的OpenCV VideoCapture打开视频| java

goucqfw6  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(118)

我正在尝试使用OpenCv VideoCapture打开存储在HDFS上的视频文件。这是一个使用Hadoop RecordReader的案例,我可以找到该文件,但在VideoCapture中不工作。有解决此问题的帮助吗?
MyRecordReader.java

public void initialize(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException {
        // Set the current frame to 0 and the total number of frames to the length of the video
        currentFrame = 0;
        System.out.printf("%s#initialize(%s, %s)\n", this.toString(), split.toString(), context.getJobName());

        Configuration conf = context.getConfiguration();
        FileSystem fileSystem = FileSystem.get(conf);
        String pathString = "/user/usermr/input/projeto/traffic.mp4";
        Path path = new Path(pathString);
        if (fileSystem.exists(path))
            System.out.println("Found video : " + pathString);

        cap = new VideoCapture(path.toString());
        if ( !cap.isOpened() )
            System.out.println("Cannot open the video file");

        System.out.println("Frames: " + cap.get(Videoio.CAP_PROP_FRAME_COUNT));
}

输出:enter image description here

oalqel3c

oalqel3c1#

VideoCapture参数假定为本地文件路径,而不是远程文件路径,更不用说引用被分成块并分布在多个服务器(数据节点)之间的文件的路径。
HDFS并不是一个理想的存储视频资源的“媒体服务器”系统,你需要下载整个文件,就像评论中提到的那样,然后才能处理它。

相关问题