Asterisk 13在Debian 9下无法播放音频问题求助
Asterisk 13无法播放音频文件的排查与解决
首先得指出你这里最明显的问题——Read命令的用法完全不符合语法规范,这大概率是导致音频无法播放、用户直接断开的核心原因!
核心问题:Read命令参数错误
Asterisk的Read命令第一个参数必须是用来存储用户输入的变量名,而不是音频文件路径!你现在把音频路径放在第一个参数的位置,Asterisk根本无法识别,直接导致流程异常,触发用户断开。
修正后的extensions.conf示例
[ivr1] exten => s,1,NoOp(IVR1) same => n,Answer() ; 正确语法:Read(存储输入的变量名, 音频文件路径, 输入长度, 超时时间) ; 注:Asterisk默认会在/var/lib/asterisk/sounds/目录下查找,所以可以省略前缀,直接写custom/welcome same => n,Read(USER_INPUT, custom/welcome, 4, 5) same => n,WaitExten(5) exten => 6598,1,Goto(ivr1,s,1)
其他可能的排查方向
如果修正语法后还是有问题,可以逐一检查以下几点:
1. 音频文件权限问题
确保音频文件属于asterisk用户/组,且权限正确:
# 修改文件所属 chown asterisk:asterisk /var/lib/asterisk/sounds/custom/welcome.* # 设置正确权限 chmod 644 /var/lib/asterisk/sounds/custom/welcome.*
2. 音频格式不兼容
Asterisk对音频格式有严格要求,推荐使用8kHz采样率、单声道、PCMU/PCMA编码的WAV文件。你可以用file命令检查文件格式:
file /var/lib/asterisk/sounds/custom/welcome.wav
如果格式不对,用sox转换:
sox 你的原始音频文件.mp3 -r 8000 -c 1 -u -b 16 /var/lib/asterisk/sounds/custom/welcome.wav
3. SIP编码协商问题
确认你的SIP客户端和Asterisk的编码配置匹配:
- 在
/etc/asterisk/sip.conf中确保允许常用编码:allow=ulaw,alaw - 在SIP客户端中选择对应的编码(比如PCMU/ULaw),避免使用Asterisk不支持的编码。
4. 查看详细日志排查
启用Asterisk的详细日志,获取更多错误信息:
在Asterisk命令行中执行:
core set verbose 10 core set debug 10
然后再次测试调用,查看日志中是否有“文件不存在”“格式不支持”之类的错误提示。
内容的提问来源于stack exchange,提问作者Gonzalo
相关产品推荐
相关产品推荐

