5

我正在尝试为我正在处理的音频项目创建一个基于 OPUS 的多播服务器,它将在 O-Droid X 上运行 (http://www.hardkernel.com/renewal_2011/products/prdt_info.php?g_code =g133999328931) 用于这个项目。目前我不确定从哪里开始使用 OPUS 编解码器在 linux 或 android 中创建和制作多播服务器。这是我从头开始完成的第一个用于音频支持的多播服务器。如果有任何指针,他们将不胜感激。

此外,使其可通过网页访问并通过该网页可播放将是一种理想的情况,这样就不需要客户端上的特定应用程序。

4

2 回答 2

1

显然 Icecast 做了很多你正在寻找的东西。它是开源的 (GPL) 并支持使用 Ogg 容器格式的 Opus 流,您可以了解一些通用的软件架构理念。我的 SoundWire Android 应用程序(带有 Win/Linux 服务器)以低延迟进行 Opus 流式传输,但网络协议是自定义的......我不知道任何可以实现低延迟的既定开放协议(根据我的定义,1 秒延迟并不低潜伏)。

我的方法是构建一个传统的网络服务器,为每个客户端设置一个普通的单播 UDP 套接字。如果您想要低延迟,请避免使用 TCP,那么您将不得不以某种方式处理 UDP 的数据报性质。使用 Opus,每个客户端流式传输的数据量不会过多。我仅将多播用于发现(自动定位服务器)。

我建议您从一些开源服务器代码开始并根据您的需要对其进行调整,引入非常易于集成的 Opus,如果合适,请选择 Ogg 等容器格式(搜索 Ogg Opus)。如果您想要浏览器兼容性,那么您将或多或少地实现 Web 服务器的一部分(HTTP 等),并且将不得不放弃您的低延迟目标。

于 2013-01-24T05:49:08.490 回答
0

作为一般说明,等待回复我的评论:您会失望地得知多播几乎没有用。除了您在现实世界中可能不会遇到的一些不寻常的配置之外,多播在 Internet 上不起作用,因为大多数路由器都没有配置为通过它。它实际上只能在本地网络上使用。

至于通过网页访问它,你几乎不走运。浏览器没有对多播的本地支持,对 OPUS 的支持也不广泛,而且大多数扩展浏览器功能的标准方法(例如,Javascript 和 Flash)也对您没有太大帮助。您可能可以在 Java 小程序中实现它,但是安装了有效 Java 的用户代理的数量正在迅速减少(尤其是最近的 Java 漏洞利用),并且生成的小程序最终可能需要提升权限才能使用多播。

于 2013-01-14T19:27:10.830 回答