最近遇到一個客戶需求,希望在會議室建立起來后,自動播放一段指定的聲音。
已知會議室命令,假設建立起一個會議室號碼3000,很容易實現以下功能:
一、播放一個聲音文件一次
conference 3000 play /home/test.wav
二、播放一個聲音文件二次
conference 3000 play file_string:///home/test.wav!/home/test.wav
三、播放不同的聲音文件(原理同二)
conference 3000 play file_string:///home/test0.wav!/home/test1.wav
四、持續不停的播放一個聲音文件
呃……其實繞彎路的方法是有的,監聽會議室播放事件,一旦發現指定會議室的播放結束,就重新放一遍,直到會議室關閉……
有沒有更優雅的方法呢?我想到了第一個進會議室的人,如果會議室里只有這一個人,那么TA會一直收到背景音樂的聲音……
看看源代碼,會議播放接口是一樣的,那是為什么呢?
繼續看看,啊哈,文件類型不一樣!第一個人進會議室,播放的文件是local_stream://類型的!原理明白了,就好實現了……
1.把聲音文件放置到合適的位置。
例如:/usr/local/freeswitch/sounds/test/8000路徑下。
2.增加本地音頻流配置,打開/usr/local/freeswitch/conf/autoload_configs/local_stream.conf.xml文件,增加如下配置:
1 <directory name="test/8000" path="$${sounds_dir}/test/8000"> 2 <param name="rate" value="8000"/> 3 <param name="shuffle" value="false"/> 4 <param name="channels" value="1"/> 5 <param name="interval" value="20"/> 6 <param name="timer-name" value="soft"/>
3.執行reload_local_stream test/8000使配置生效。
4.執行conference 3000 play local_stream://test。
OK,試一下,是不是3000里的所有成員都能一直循環聽這個聲音了呢?