【问题标题】:Solution to playing various strams in Asterisk在Asterisk中播放各种流的解决方案
【发布时间】:2015-09-18 15:29:37
【问题描述】:

我们有几个广播电台可以在手机上播放。他们中的大多数都有 MP3 格式的流。有些使用 MMS,有些使用 RTSP。

我们有两个问题:

1) 为所有常见格式寻找解决方案。目前只有 MP3 与 madplay 兼容。 MMS 需要 mplayer,它一直在死去。 2) 即使使用 madplay,盒子也只能处理 20-30 个不同的流,因为每个流使用 2-3% 的 CPU。目前,musiconhold.conf 会在启动时启动每个 bash 脚本,所以如果说我们有 30 个频道,无论是否有人打电话来听,我们都需要拉出所有频道。

以下是我们使用的两个 bash 脚本:

疯狂游戏:

#!/bin/bash
wget -q -T 120 -O - http://example.org/stream.mp3 | /usr/local/bin/madplay -Q -o raw:- --mono -R 8000 -a -6 -

播放器

#!/bin/bash
if [ -n "`ls /tmp/pdmohpipe`" ]; then
    rm -f /tmp/pdmohpipe
fi
PIPE="/tmp/pdmohpipe"
mknod $PIPE p
sleep 3
/usr/local/bin/mplayer mms://10.10.10.10/radio_online -really-quiet -quiet -ao pcm:nowaveheader,file=$PIPE -af resample=8000,channels=1,format=mulaw  | cat $PIPE
rm $PIPE 

也许使用 moh realtime 会有所帮助,因为它只有在有人想听的时候才会被拉出来?我知道FreeSwitch支持VLC,不知道Asterisk有没有支持?

【问题讨论】:

    标签: bash asterisk mplayer


    【解决方案1】:

    您可以使用任何能够将输出更改为 slin(8khz 16 位未压缩 pcm)的解决方案

    您可以在每个 moh 类别的每个盒子中使用一个固定线。为此需要使用

    [general]
    ;cachertclasses=yes ; use 1 instance of moh class for all users who are using it,
                        ; decrease consumable cpu cycles and memory
                        ; disabled by default
    

    请注意,这是 musiconhold 模块的 GLOBAL 设置。 结果,每个具有相同 moh 类的新呼叫者都将通过音频挂钩连接到相同(转码)的 moh 类,类似于会议。所有人都会听到文件/流的相同时刻

    【讨论】:

    • 有什么建议比 madplay 使用更少的 CPU 吗?问题是,如果我有 50 个流,即使没有人在听,它仍在使用 CPU。
    • 50 个不同的流?
    • 其实现在的项目是玩150,目前我已经分布在3个VPS上。
    • 如果是这样,您创建的系统将关闭未使用的流并共享相同的流。或在主星号框外设置转码。或者写一些比 mpeg lib 解压效果更好的东西(这不是那么容易,真的)
    • arheops:关于从哪里开始有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多