record_session进行录音时,如果保存的文件没有后缀,
会使用mod_native_file模块,不对声音进行编解码,直接将收到的声音数据保存到两个文件中。
文件名有in,代表收到主叫的声音。
文件名有Out,代表传给主叫的声音。
查看支持的录音文件命令
freeswitch@PC-201705271510>show file
file,L16,mod_native_file
file,PCMA,mod_native_file
file,PCMU,mod_native_file
file,PROXY,mod_native_file
file,PROXY-VID,mod_native_file
file,SPEEX,mod_native_file
file,VP8,mod_native_file
file,VP9,mod_native_file
file,adpcm,mod_sndfile
file,aiff,mod_sndfile
file,al,mod_sndfile
file,alaw,mod_sndfile
file,au,mod_sndfile
file,avr,mod_sndfile
file,caf,mod_sndfile
file,file,mod_dptools
file,file_string,mod_dptools
file,gsm,mod_sndfile
.......
如在dialplan增加
<action application="record_session" data="$${recordings_dir}/${caller_id_number}-${strftime(%Y-%m-%d-%H-%M-%S)}"/>
只录主叫的声音
<action application="set" data="RECORD_READ_ONLY=true"/>
只录传给主叫的声音。
<action application="set" data="RECORD_WRITE_ONLY=true"/>
RECORD_WRITE_ONLY和RECORD_READ_ONLY同时设置为true,只录制read
使用mod_native_file模块录音,RECORD_ANSWER_REQ、RECORD_BRIDGE_REQ、RECORD_APPEND等,都变无效了。参见switch_ivr_record_session函数,把flags都清除了。
if ((ext = strrchr(file, '.'))) {
......
} else {
int tflags = 0;
......
if ((flags & SMBF_WRITE_STREAM)) {
tflags |= SMBF_TAP_NATIVE_WRITE;
}
if ((flags & SMBF_READ_STREAM)) {
tflags |= SMBF_TAP_NATIVE_READ;
}
**flags = tflags;**
}