Play, Pause, Rewind, and Fast Forward Buttons (App Designer)
42 views (last 30 days)
Show older comments
Ledoux Laboratory
on 4 Sep 2018
Commented: Jesper Ankersen
on 8 Sep 2022
I am using the app designer and was wondering about implementing Play, Pause, Rewind, and Fast Forward buttons. Right now I do not have these features implemented - I just have a video playing using a combination of VideoReader, hasFrame, readFrame, and imshow functions. Here is my code:
filename = vidfile;
v = VideoReader(filename);
frame = 0;
app.OffsetFrameNumberEditField.Value = offsets(index);
ix = 1;
x = 1;
while hasFrame(v)
frame = frame + 1;
app.AbsoluteFrameNumberEditField.Value = frame;
app.OffsetFrameNumberEditField.Value = frame+offsets(index);
if frame == 1
cla(app.Video)
fig = imshow(readFrame(v), 'Parent', app.Video);
else
set(fig,'CData',readFrame(v))
end
if ge(frame,range(1)) && le(frame,range(end))
if x == 1
SP = scatter(app.SagittalAxes,dataS(ix,1), dataS(ix,4),'MarkerFaceColor','k','MarkerEdgeColor','k');
FP = scatter(app.FrontalAxes,dataF(ix,1), dataF(ix,4),'MarkerFaceColor','k','MarkerEdgeColor','k');
TP = scatter(app.TransverseAxes,dataT(ix,1), dataT(ix,4),'MarkerFaceColor','k','MarkerEdgeColor','k');
x = x+1;
else
set(SP,'XData',dataS(ix,1))
set(SP,'YData',dataS(ix,4))
set(FP,'XData',dataF(ix,1))
set(FP,'YData',dataF(ix,4))
set(TP,'XData',dataT(ix,1))
set(TP,'YData',dataT(ix,4))
end
ix = ix+1;
end
pause(0.005)
end
0 Comments
Accepted Answer
Kevin Chng
on 5 Sep 2018
Hi, your question is really interesting. You may consider my solution as follows
It is including play, pause, resume,speed up,slow down, forward and rewind/backward.
button :
function play(app,event)
global numFrames pauseS stop speed iter
pauseS=true
stop = true
speed = 1
% Count the number of frames
numFrames = 1;
v = VideoReader('song.mp4')
while hasFrame(v)
readFrame(v)
numFrames = numFrames +1;
end
v= VideoReader('song.mp4)
iter=1;
while(1)
frame = read(v,iter)
imshow(frame,'Parent',app.UIAxes'); % You may use button to host the image
drawnow
% here for slow down and speed up
if speed ==1
elseif speed==2
pause(0.0001);
elseif speed ==3
pause(0.1)
elseif spped==4
pause(1)
end
% Here for pause and resume
if pauseS == false
while(1)
pause(0.001);
if pauseS == true
break;
end
end
end
% Stop playing
if stop == false
break;
end
iter = iter+1;
% If frame is finished, break
if iter>numFrames
break;
end
end
Pause Button :
function pause(app, event)
global pauseS
if pauseS==true
pauseS=false;
else
pauseS=true;
end
end
Stop Button :
function stop(app, event)
global stop
stop=false;
end
Speed Up and Slow Down Button :
function speedup(app,event)
global speed
if speed==2
speed=1;
elseif speed ==3
speed=2;
elseif speed ==4
speed=3;
end
end
function slowdown(app,event)
global speed
if speed ==1
speed=2;
elseif speed==2
speed=3;
elseif speed==3
speed=4;
end
end
forward and rewind button :
function forward(app,event)
global iter numFrames
if iter<(numFrames-100)
iter = iter +100;
end
end
function rewind(app,event)
global iter
if iter>100
iter=iter-100;
end
end
Let me know if you have any question. Kindly accept my answer if it is working for you.
4 Comments
Jesper Ankersen
on 8 Sep 2022
Are you using the regular button or state button for this application ?
More Answers (0)
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!