MATLAB Answers

Vignesh
1

how to play videos using implay function in specific axes?

Asked by Vignesh
on 8 May 2015
Latest activity Commented on by Ghanashyama Prabhu on 25 Oct 2017
i am trying to play videos in my matlab gui but i couldnt figure out how to play video in my specific axes. plz help me :)

  2 Comments

global videoFReader
faceDetector = vision.CascadeObjectDetector();
videoFReader = vision.VideoFileReader('test.avi');
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
videoFrame = step(videoFReader);
step(videoPlayer, videoFrame);
end
axes(handles.axes1)
imshow(videoFReader);
% However Videoplayer is not in axes box !!!!
Please help me
global show_video; videoFReader = vision.VideoFileReader('test.mp4'); framert = 30; videoPlayer = vision.VideoPlayer; ax = handles.axes1; % assuming axes1 is used to disply in GUI while ~isDone(videoFReader) videoFrame = step(videoFReader); image(videoFrame, 'Parent', ax); set(ax,'Visible', 'off'); pause(1/framert); if show_video ~=1 % used as global so that can be set at controlling place. if show_video = 1 continuously play break end end release(videoPlayer);

Sign in to comment.

3 Answers

Answer by Thomas Koelen on 8 May 2015
Edited by Thomas Koelen on 8 May 2015
 Accepted Answer

You have axes in your gui, let's say they are called
axes1
(you can check the name of the axes by double clicking on it in GUIDE, then look for Tag.
Then the only thing you have to do is:
axes(handles.axes1);
implay(videohere);

  6 Comments

if i want to use 'implay', because it takes less time. how can I do?
Not enough memory available for 149423 frames. what can i do with this error? Thank u
Hi, Ive just tried both ways but it doesnt work. Implay always pop new window, I need to have it in the axes in GUI.

Sign in to comment.


Answer by Gabriel Zalles on 26 Jun 2017

Can I just say? Matlab support is attrocious. I can't believe how little help there is online for problems like this. The company should pay people to go online and provide solutions for people.

  0 Comments

Sign in to comment.


Answer by Ganesh Raut on 8 May 2015

Thomas Koelen..
ur answer not work.. actually play video but not in axes..plz help

  4 Comments

Show 1 older comment
but you have not used 'implay'
Check the my comment, this should work.
No, it doesn't work. It will play in the designated axes, but the use of a for-loop in conjunction with pause gives a very inaccurate frame rate.
global show_video; videoFReader = vision.VideoFileReader('test.mp4'); framert = 30; videoPlayer = vision.VideoPlayer; ax = handles.axes1; % assuming axes1 is used to disply in GUI while ~isDone(videoFReader) videoFrame = step(videoFReader); image(videoFrame, 'Parent', ax); set(ax,'Visible', 'off'); pause(1/framert); if show_video ~=1 % used as global so that can be set at controlling place. if show_video = 1 continuously play break end end release(videoPlayer);

Sign in to comment.