1. FreeSwitch录音功能基础配置FreeSwitch作为一款强大的开源通信平台录音功能是其核心能力之一。但很多新手第一次接触时会发现默认配置下录音功能并未开启。这就像买了一台新相机却发现快门按钮被锁住了——别担心只需要简单几步就能解锁这个实用功能。首先找到拨号计划配置文件通常路径是/usr/local/freeswitch/conf/dialplan/default.xml。用vim或nano编辑器打开后在extension nameLocal_Extension部分添加录音配置。我建议把这些参数放在condition标签内action applicationset dataRECORD_TITLE通话录音 ${destination_number}/ action applicationset dataRECORD_STEREOtrue/ action applicationrecord_session data$${base_dir}/recordings/${strftime(%Y-%m-%d)}_${uuid}.wav/这里有几个实用技巧使用$${base_dir}变量确保路径正确用${strftime}自动生成日期前缀添加${uuid}保证文件名唯一性配置完成后需要在FreeSwitch控制台执行reloadxml或按F6热键加载配置。遇到过不少开发者忘记这一步结果调试半天发现配置没生效。记得每次修改拨号计划后都要重载2. 单腿录音的两种实现方式单腿录音指的是仅录制单方通话内容常见于IVR系统、语音信箱等场景。根据我的项目经验推荐两种最稳定的实现方案。方法一使用originate API适合通过外部程序触发录音的场景比如定时提醒录音freeswitch originate user/1000 record(/tmp/test_recording.wav)这个命令会呼叫分机1000并在接听后开始录音。实测发现如果路径包含中文或空格需要用引号包裹路径。我曾遇到过因路径特殊字符导致录音失败的情况建议坚持使用英文命名。方法二拨号计划配置更适合常规通话录音需求在dialplan中添加action applicationanswer/ action applicationrecord data/recordings/${caller_id_number}_${destination_number}.wav/有个容易踩的坑record应用默认会在通话结束时自动停止录音。如果需要提前停止可以通过DTMF信号控制添加参数record_finish_on_key#。3. 双通道录音高级技巧两条腿录音能同时录制通话双方声音对客服质检、纠纷取证等场景特别重要。经过多次性能测试我总结出最优配置方案。3.1 基于UUID控制的API方法# 开始录音 uuid_record channel_uuid start /recordings/dual_channel.wav # 停止特定录音 uuid_record channel_uuid stop /recordings/dual_channel.wav # 停止所有录音 uuid_record stop all获取channel_uuid的小技巧在拨号计划中使用action applicationset datahangup_after_bridgetrue/可以保持通道活跃。另外建议添加异常处理uuid_record channel_uuid start /recordings/backup.wav || echo 录音启动失败3.2 拨号计划集成方案在bridge应用前添加record_sessionaction applicationset dataRECORD_STEREOtrue/ action applicationrecord_session data/recordings/${uuid}_mixed.wav/遇到过音频不同步的问题可以调整jitterbuffer参数action applicationset dataenable_jitter_buffertrue/ action applicationset datajitter_buffer_latency60/4. 立体声与音频处理实战将双声道合并为立体声文件能显著提升录音质量。经过对比测试推荐以下工作流首先确保录音时设置立体声标志action applicationset dataRECORD_STEREOtrue/通话结束后用sox工具处理sox -M left.wav right.wav stereo.wav如果遇到杂音问题可以添加降噪处理sox noisy.wav clean.wav noisered noise.prof 0.3对于大文件处理我习惯先用normalize统一音量normalize -m *.wav5. 录音系统优化与故障排查搭建稳定可靠的录音系统这些实战经验值得收藏存储优化方案使用record_template变量自动分目录存储添加cron任务定期压缩旧录音find /recordings/ -name *.wav -mtime 30 -exec gzip {} \;常见错误排查录音文件为空检查存储路径权限chown -R freeswitch:freeswitch /recordings录音中断调整session-timeout参数音质差修改编码格式为G722性能监控命令# 查看正在进行的录音 show recordings # 监控存储空间 fs_cli -x status记得定期检查录音文件完整性我写了个简单的检测脚本#!/bin/bash for file in /recordings/*.wav; do if [ $(soxi -D $file 2/dev/null) -eq 0 ]; then echo 损坏文件: $file fi done
5-FreeSwitch-深入解析FreeSwitch录音功能配置与实战应用
发布时间:2026/5/30 23:51:20
1. FreeSwitch录音功能基础配置FreeSwitch作为一款强大的开源通信平台录音功能是其核心能力之一。但很多新手第一次接触时会发现默认配置下录音功能并未开启。这就像买了一台新相机却发现快门按钮被锁住了——别担心只需要简单几步就能解锁这个实用功能。首先找到拨号计划配置文件通常路径是/usr/local/freeswitch/conf/dialplan/default.xml。用vim或nano编辑器打开后在extension nameLocal_Extension部分添加录音配置。我建议把这些参数放在condition标签内action applicationset dataRECORD_TITLE通话录音 ${destination_number}/ action applicationset dataRECORD_STEREOtrue/ action applicationrecord_session data$${base_dir}/recordings/${strftime(%Y-%m-%d)}_${uuid}.wav/这里有几个实用技巧使用$${base_dir}变量确保路径正确用${strftime}自动生成日期前缀添加${uuid}保证文件名唯一性配置完成后需要在FreeSwitch控制台执行reloadxml或按F6热键加载配置。遇到过不少开发者忘记这一步结果调试半天发现配置没生效。记得每次修改拨号计划后都要重载2. 单腿录音的两种实现方式单腿录音指的是仅录制单方通话内容常见于IVR系统、语音信箱等场景。根据我的项目经验推荐两种最稳定的实现方案。方法一使用originate API适合通过外部程序触发录音的场景比如定时提醒录音freeswitch originate user/1000 record(/tmp/test_recording.wav)这个命令会呼叫分机1000并在接听后开始录音。实测发现如果路径包含中文或空格需要用引号包裹路径。我曾遇到过因路径特殊字符导致录音失败的情况建议坚持使用英文命名。方法二拨号计划配置更适合常规通话录音需求在dialplan中添加action applicationanswer/ action applicationrecord data/recordings/${caller_id_number}_${destination_number}.wav/有个容易踩的坑record应用默认会在通话结束时自动停止录音。如果需要提前停止可以通过DTMF信号控制添加参数record_finish_on_key#。3. 双通道录音高级技巧两条腿录音能同时录制通话双方声音对客服质检、纠纷取证等场景特别重要。经过多次性能测试我总结出最优配置方案。3.1 基于UUID控制的API方法# 开始录音 uuid_record channel_uuid start /recordings/dual_channel.wav # 停止特定录音 uuid_record channel_uuid stop /recordings/dual_channel.wav # 停止所有录音 uuid_record stop all获取channel_uuid的小技巧在拨号计划中使用action applicationset datahangup_after_bridgetrue/可以保持通道活跃。另外建议添加异常处理uuid_record channel_uuid start /recordings/backup.wav || echo 录音启动失败3.2 拨号计划集成方案在bridge应用前添加record_sessionaction applicationset dataRECORD_STEREOtrue/ action applicationrecord_session data/recordings/${uuid}_mixed.wav/遇到过音频不同步的问题可以调整jitterbuffer参数action applicationset dataenable_jitter_buffertrue/ action applicationset datajitter_buffer_latency60/4. 立体声与音频处理实战将双声道合并为立体声文件能显著提升录音质量。经过对比测试推荐以下工作流首先确保录音时设置立体声标志action applicationset dataRECORD_STEREOtrue/通话结束后用sox工具处理sox -M left.wav right.wav stereo.wav如果遇到杂音问题可以添加降噪处理sox noisy.wav clean.wav noisered noise.prof 0.3对于大文件处理我习惯先用normalize统一音量normalize -m *.wav5. 录音系统优化与故障排查搭建稳定可靠的录音系统这些实战经验值得收藏存储优化方案使用record_template变量自动分目录存储添加cron任务定期压缩旧录音find /recordings/ -name *.wav -mtime 30 -exec gzip {} \;常见错误排查录音文件为空检查存储路径权限chown -R freeswitch:freeswitch /recordings录音中断调整session-timeout参数音质差修改编码格式为G722性能监控命令# 查看正在进行的录音 show recordings # 监控存储空间 fs_cli -x status记得定期检查录音文件完整性我写了个简单的检测脚本#!/bin/bash for file in /recordings/*.wav; do if [ $(soxi -D $file 2/dev/null) -eq 0 ]; then echo 损坏文件: $file fi done