如何使用Matlab函数录制,暂停和保持录制?

时间:2014-12-08 12:21:49

标签: matlab audio-recording playback

我正在尝试使用此代码录制,暂停和再次录制音频,但它不起作用,只有我最后一次按下录音,录制的声音和努力失败之前。

我应该如何使用暂停和恢复功能来制作录音/暂停按钮?

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);

1 个答案:

答案 0 :(得分:1)

我假设您上面发布的代码是按钮的回调函数中发生的事情?

然后可能的解释是,当回调退出时,句柄以及handle.rec对象不会更新,因此不保存音频数据。尝试在回调结尾添加guidata(hObject, handles);以保存句柄。

您使用的是什么版本的Matlab?图形系统在2014b更新,因此如果您使用的是此版本,则上述解决方案可能不适用。

编辑: 好的,在查看完整代码时,您将在回调中初始化audiorecorder对象,每次按下按钮时都会有效地重置它。这意味着只要按下按钮,就会重新开始录制。

您可以通过在回调之外的某处初始化记录器来避免这种情况,然后将对象传递给按钮回调函数。