我正在尝试使用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));
}
1条答案
按热度按时间oalqel3c1#
VideoCapture
参数假定为本地文件路径,而不是远程文件路径,更不用说引用被分成块并分布在多个服务器(数据节点)之间的文件的路径。HDFS并不是一个理想的存储视频资源的“媒体服务器”系统,你需要下载整个文件,就像评论中提到的那样,然后才能处理它。