freeswitch1.6 录音功能

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;**
    }

猜你喜欢

转载自blog.csdn.net/ssj901217/article/details/78125484
今日推荐