我正在尝试使用此代码录制,暂停和再次录制音频,但它不起作用,只有我最后一次按下录音,录制的声音和努力失败之前。
我应该如何使用暂停和恢复功能来制作录音/暂停按钮?
function Rec_Pausb_Callback(hObject, eventdata, handles)
global openS recS;
openS=0; recS=1;
handles.recs=str2double(get(handles.Samplef, 'String'));
recb=str2double(get(handles.BPS, 'String'));
if(handles.Samplef >32 || handles.Samplef <8)
disp('Frequency must between 8 to 32 (KiloHertz)');
else
handles.Samplef=handles.Samplef;
end
disp(handles.Samplef);
state=get(hObject,'value');
handles.rec=audiorecorder(handles.recs*1000,recb,1);
if state
set(hObject,'String','Pause');
resume(handles.rec);
else
set(hObject,'String','Record');
pause(handles.rec);
end
guidata(hObject,handles);
答案 0 :(得分:1)
我假设您上面发布的代码是按钮的回调函数中发生的事情?
然后可能的解释是,当回调退出时,句柄以及handle.rec对象不会更新,因此不保存音频数据。尝试在回调结尾添加guidata(hObject, handles);
以保存句柄。
您使用的是什么版本的Matlab?图形系统在2014b更新,因此如果您使用的是此版本,则上述解决方案可能不适用。
编辑: 好的,在查看完整代码时,您将在回调中初始化audiorecorder对象,每次按下按钮时都会有效地重置它。这意味着只要按下按钮,就会重新开始录制。
您可以通过在回调之外的某处初始化记录器来避免这种情况,然后将对象传递给按钮回调函数。