微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

FreeSWITCH 异步播放 wav 文件

我的操作 aide_941 2℃ 0评论

写一个 lua 脚本控制 FreeSWITCH Session,这个很容易,是吧

但因为某些特殊原因,需要异步播放 wav 文件,代码逻辑如下:

sesion:execute("displace_session", "welcome.wav")

while session:ready() do

local varx = session:getVariable("varx")

if varx == "***" then break end

sesion:sleep(100)

end

sesion:execute("stop_displace_session", "welcome.wav")

但实际运行起来发现根本听不到播放的声音,原因在哪里

找呀找呀,终于找到安东尼的一段话:

it doesn’t work with sleep because sleep does not write any packets.

send_silence_when_idle=400

于是做了下面这个操作:

fs_cli -x ‘global_setvar send_silence_when_idle=400’

再试,就 OK 了

FreeSWITCH 东西真 tm 多,但东西也真他娘的好呀!

fs_cli -x ‘show application’ | grep displace
displace_session,Displace File,<path> [<flags>] [+time_limit_ms],mod_dptools
stop_displace_session,Stop Displace File,<path>,mod_dptools

flags 支持哪些组合呢?

  1. l,loop,循环播放

  2. m,mute ,在以前通话的基础上叠加 wav 文件

  3. rw, lega & legb 听到同一个 wav 文件

  4. f,first, 设置成第一个 media bug,估计很少有人用

测试过下面的组合:

  1. lm 循环播放,在 lega 上执行 dispace,lega & legb 互相可以听到,lega 听到 legb的同时 还能听到 wav 文件, 但 legb 听不到 wav

  2. lrw 循环播放,lega 和 legb 互相听不到,但都听到同一个 wav 文件

此外,用 local_stream://moh 代替 wav 文件名,没问题

说到 moh ,默认的配置是 local_stream://moh

但也可以修改,办法是 在 vars.xml 里面增加一个配置:

<X-PRE-PROCESS cmd="set" data="hold_music={loops=-1}tone_stream://v=-30;%(250,0,350);%(250,0,440)"/>

那个写法叫 TGML,可以查到手册的

全文完
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_56167818/article/details/144600836

转载请注明:SuperIT » FreeSWITCH 异步播放 wav 文件

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!