创build基于OPUS编解码器的多播服务器(android / linux)

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

也可以通过网页访问并通过该网页进行播放,这是一个理想的情况,这样就不需要客户端的特定应用程序。

显然Icecast做了很多你正在寻找的东西。 它是开放源码(GPL),并使用Ogg容器格式支持Opus流,您可以查看一些通用软件体系结构的想法。 我的SoundWire Android应用程序(与Win / Linux服务器)Opus流低延迟,但网络协议是自定义的…我不知道任何已建立的开放协议,可以做低延迟(由我的定义1秒的延迟不低潜伏)。

我的方法是建立一个传统的网络服务器,为每个客户端建立一个正常的单播UDP套接字。 如果你想要低延迟,避免使用TCP,那么你必须以某种方式处理UDP的数据报性质。 通过Opus,每个客户端的数据流量不会过多。 我只使用多播发现(自动定位服务器)。

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

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

至于通过网页访问,你几乎不走运。 没有本地浏览器对多播的支持,OPUS也不支持,大多数扩展浏览器功能的标准方法(例如,Javascript和Flash)也不能真正帮助你。 您可能能够在Java小程序中实现它,但是具有正在运行的Java安装的用户代理的数量正在迅速缩小(特别是对于最近的Java漏洞),并且最终得到的小程序可能最终需要提升特权才能使用多播。