MATLAB GUI界面实现以一个按钮控制播放和暂停视频功能
一个按钮实现播放和暂停视频
通过改变按钮上显示的字“播放”、“暂停”来实现控制。
function pausestart_Callback(hObject, eventdata, handles)
% hObject handle to pausestart (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global VideoObject;
global Currentframe;
st = get(handles.pausestart,'string');%判断控件的String 是否为 播放
if strcmp(st, '播放')
set(handles.pausestart,'string','暂停');
uiresume;%回复暂停
obj=VideoObject;
obj_numberofframe=obj.NumberOfFrame;
if Currentframe==obj_numberofframe
Currentframe=1;
set(handles.text7,'String',num2str(Currentframe))
end
for j=Currentframe:obj_numberofframe
frame=read(obj,j);
axes(handles.axes1);
imshow(frame);
Currentframe=j;
set(handles.text7,'String',num2str(Currentframe));
%关键部分
if strcmp(st,'暂停')
break;
end
drawnow()
end
elseif strcmp(st,'暂停')
set(handles.pausestart,'string','播放');
uiwait;%用于暂停
end
框架
function pausestart_Callback(hObject, eventdata, handles)
st = get(handles.pausestart,'string');%判断控件的String 是否为 播放
if strcmp(st, '播放')
set(handles.pausestart,'string','暂停');
uiresume;%回复暂停
for ……
if strcmp(st,'暂停')
break;
end
drawnow()
end
elseif strcmp(st,'暂停')
set(handles.pausestart,'string','播放');
uiwait;%用于暂停
end
两个按钮分别控制播放和暂停
通过设置全局变量pluse实现视频的播放和暂停。
缺点:需要两个按钮(播放按钮和暂停按钮)
%播放视频按钮
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global VideoObject; %视频路径全局变量,VideoObject=VideoReader('D:/ant1.mp4')
global Currentframe; %当前帧数
global pluse; %控制播放和暂停变量
pluse=1;
obj=VideoObject;
obj_numberofframe=obj.NumberOfFrame;
if Currentframe==obj_numberofframe
Currentframe=1;
set(handles.text7,'String',num2str(Currentframe))
end
for j=Currentframe:obj_numberofframe
frame=read(obj,j);
axes(handles.axes1);
imshow(frame);
Currentframe=j;
set(handles.text7,'String',num2str(Currentframe));
%如果按下暂停按钮,则pluse=0,退出循环
if pluse==0
break;
end
drawnow() %不可缺少,实时更新全局变量
end
%暂停视频按钮
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global pluse;
pluse=0;
框架
%播放视频按钮
function pushbutton7_Callback(hObject, eventdata, handles)
global pluse; %控制播放和暂停变量
pluse=1;
for ……
%如果按下暂停按钮,则pluse=0,退出循环
if pluse==0
break;
end
drawnow() %不可缺少,实时更新全局变量
end
%暂停视频按钮
function pushbutton8_Callback(hObject, eventdata, handles)
global pluse;
pluse=0;