readFrame() too slow. How to switch too VideoFileReader and VideoPlayer?
    10 views (last 30 days)
  
       Show older comments
    
Hello,
I've written a code in which a user has to click on the video while it is being played. Unfortunately, the readFrame() method is too slow. I came across the VideoFileReader and VideoPlayer method, but I can't seem to figure out how to put a figure handle to the VideoPlayer window... In my code, I created a handle using image(temp,'Parent',curr_axes), but I can't seem to do the same for videoPlayer. Can anybody help?
%Load file
clear all, close all, clc;
fileList = dir('*.mp4');
video_name = fileList.name;
vid = VideoReader(video_name);
curr_axes = axes;
hfig = figure(1);
%Use callback function to register any mouse clicks on the figure 
set(hfig,'WindowButtonDownFcn',@countclicks)
%Play video
framecount = 0;
while vid.hasFrame() %Play video
    temp = vid.readFrame();
    count = framecount + 1;
    image(temp,'Parent',curr_axes);
    if framecount == 1
        figure(hfig);
        p2 = imellipse;
        vert_p2 = getVertices(p2);
        wait(p2);
    end
    pause(0.05/25);
end
Accepted Answer
  Walter Roberson
      
      
 on 4 Aug 2020
        %Load file
fileList = dir('*.mp4');
video_name = fileList(1).name;
vid = vision.VideoFileReader(video_name);
hfig = figure(1);
curr_axes = axes('Parent', hfig);
box(curr_axes, 'off');
imh = image(curr_axes, []);  %establish the handle
%Use callback function to register any mouse clicks on the figure 
set(hfig,'WindowButtonDownFcn',@countclicks)
%Play video
framecount = 0;
while ~isdone(vid) %read and play video
    temp = step(vid);
    count = framecount + 1;
    set(imh, 'CData', temp);
    if framecount == 1
        p2 = imellipse(curr_axes);
        vert_p2 = getVertices(p2);
        wait(p2);
    end
    pause(0.05/25);
end
2 Comments
  Walter Roberson
      
      
 on 4 Aug 2020
				How are you measuring the speed? Did you comment out the pause() and put in a tic and toc at appropriate places?
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
