record_session
与record比起来,record_session是非阻塞的,它可以作用于单腿的呼叫也可以用于桥接(Bridge)的呼叫;而record是阻塞的,它会阻塞直到录音完成,即只能录单腿的呼叫。
语法
record_session <record_file_path>
参数
<record_file_path>
: 录音文件生成路径。
相关通道变量
- RECORD_HANGUP_ON_ERROR:默认值为false,如果设置为true则会在录音失败时(如文件不可写入、格式错误等)挂断电话。
- RECORD_WRITE_ONLY:只录“写”方向的录音。这里的方向是相对FreeSWITCH而言的,即FreeSWITCH发出,也就是对端能够听到的声音。
- RECORD_READ_ONLY:只录“读”方向的录音,即FreeSWITCH“听”到的录音。
- RECORD_STEREO:立体声录音。
- RECORD_STEREO_SWAP:同立体声录音,但将左、右声道互换。
- RECORD_ANSWER_REQ:默认值为false,如果设为true,则在应答前执行了record_session或uuid_record就暂时不录音,而等到通话被应答后才开始录音。可以防止录上不必要的Early
Media(如回铃音或彩铃等)。
- RECORD_BRIDGE_REQ:与RECORD_ANSWER_REQ类似,只是在当前的通道与其他通道桥接了之后才开始录音。
- RECORD_APPEND:在默认情况下,如果指定的录音文件已经存在,再次录音就会覆盖该文件。将该选项设为true可以向已经存在的文件后面追加录音。可用于电话中断重新建立后重新录音时。
- record_sample_rate:可以在录音时指定采样率,以进行实时的转码。合法的采样率在源代码中使用switch_is_valid_rate(rate)宏定义,可能的取值有8000、12000、16000、24000、32000、11025、22050、44100、48000,单位为Hz。
- enable_file_write_buffering:该变量的默认值为true,即默认先写到一个内存缓冲区中,可以大大减小对存储设备(如硬盘)的访问次数,防止产生IO瓶颈。默认的缓冲区大小是65536字节。
- RECORD_MIN_SEC:最小录音秒数。如果录音时长小于该数(默认是3秒),则认为是无效的录音,并删
除录音文件。
- RECORD_INITIAL_TIMEOUT_MS:如果从录音开始检测不到声音,则在指定的毫秒后超时,停止录音。
- RECORD_FINAL_TIMEOUT_MS:如果在录音过程中检测不到声音,则在指定的毫秒后超时,停止录音。
- RECORD_SILENCE_THRESHOLD:静音能量阈值,即能量小于该值认为是静音。默认值为200。
原生格式
如果在录音时不提供录音文件的扩展名,就可以以原生的格式录音,例如,下列命令会将录音文件录成/tmp/test.PCMU(假设Channel使用的Codec是PCMU):
freeswitch> originate user/1000 &record(/tmp/test)
使用这种录音方式,一个最大的好处是可以直接支持G729编码,也不用在FreeSWITCH中进行编解码处理,因而也会减少对系统CPU的使用。
示例1
<extension name="record">
<condition field="destination_number" expression="^(100[0-9])$">
<action application="record_session" data="/tmp/record-$1.wav"/>
<action application="bridge" data="user/$1"/>
</condition>
</extension>
示例2
freeswitch> originate user/1000 &record(/tmp/test.wav)
本书版权所有 © 杜金房及各位贡献者 2016-2023,仅供在线阅读,谢绝一切形式转载。
本书
还在写作中,持续更新。
如果你也想写上几句,欢迎
加入我们。
|
返回首页 |