【问题标题】:On-demand audio streaming点播音频流
【发布时间】:2011-11-15 18:24:31
【问题描述】:

有没有人遇到过可以动态流式传输由 HTTP URL 标识的任意源的软件。

我正在寻找一种基于服务器的软件,它可以公开一个 RESTful 接口以接收播放列表的定义并以流 URL 进行响应,从而播放播放列表。播放列表中的声音文件位于可通过 HTTP 访问的不同系统上。

我确实看过 liquidsoap 项目,但不知道如何将其包装到 RESTful 网络服务中。

【问题讨论】:

  • 您希望播放列表(托管在 HTTP 服务器上的任意音频文件)在服务器上播放并组装成流以在客户端播放?
  • @Brad,是的,没错。正是我所追求的。我还需要将任何音频格式转码为低带宽 MP3,但这是次要的。
  • 如果我是你,我会用 Ices 打包一些东西,然后在服务器上使用 Icecast/SHOUTcast。它已经完成了所有这些。您只需要从 Web 服务器上的某个脚本调用它。
  • 谢谢布拉德;大声喊叫!
  • Liquidsoap 确实 提供 http get/post 等处理程序,请参见此处:savonet.sourceforge.net/doc-svn/harbor_http.html 但正如下面的答案所说,您可能想用另一种语言编写其中的一些并调用如有必要,从 Liquidsoap 中取出。

标签: web-services rest audio-streaming playlist liquidsoap


【解决方案1】:

在 Liquidsoap 中实现一个 RESTful 服务器会很麻烦。我会用任何“普通”网络编程语言(如 PHP)构建 RESTful 网络服务,然后让 Liquidsoap 调用相同的服务来获取曲目/文件。在此示例中,对http://127.0.0.1/next 的 GET 请求应将一个 http url 返回到 mp3/ogg/whatever。

(liquidsoap 1.0 版的示例代码 - 此示例不会在早期的 0.x-something 版本上运行)

def autopilot() =
  def result()
    result =
      list.hd(
        get_process_lines('curl http://127.0.0.1/next')
      )
    request.create(result)
  end
  audio_to_stereo(request.dynamic(result))
end

radio =
  mksafe(
    autopilot()
  );

output.icecast(%mp3(samplerate=44100, stereo=true, bitrate=128),
  host="127.0.0.1",
  port=8000,
  password="secretpassword",
  mount="radio.mp3",
  radio
);

在本例中,您需要一个 icecast2 服务器将流发送到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-17
    • 2018-05-23
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多