【问题标题】:Creating an OPUS codec based multicast server (android/linux)创建基于 OPUS 编解码器的多播服务器 (android/linux)
【发布时间】:2012-12-28 18:56:55
【问题描述】:

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

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

【问题讨论】:

  • 您打算将音频广播到什么地方?通过什么网络?
  • 移动设备和笔记本电脑以及通过本地无线/有线网络

标签: android linux audio-streaming multicast codec


【解决方案1】:

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

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

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

【讨论】:

  • 在设置/创建低延迟网络协议方面,您有什么建议可以给我吗?这对我来说是新的领域......
  • 只是一些一般性的想法...保持缓冲区大小尽可能小,避免臃肿的库,不要使用 TCP,编写确定性的代码(一致的行为),如果可能的话调整你的线程优先级,请仔细选择您的平台(例如,如果在 C++ 和 Java 之间进行选择,请选择 C++)。简而言之,认为精益求精。最后意识到有两个巨大的因素意味着您永远无法完全实现您的目标:IP 网络不是为可预测性或低延迟而设计的,而且您的代码运行的非实时操作系统也不是。
【解决方案2】:

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

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

【讨论】:

  • 从 15.0 beta (hacks.mozilla.org/2012/07/…) 开始,Firefox 支持 OPUS????可能的多播的原因是这将仅在本地网络上使用,并且可能发送给许多用户,我们希望尽可能减少任何和所有延迟......这是针对延迟的音频应用程序控制非常重要......我们从浏览器实现开始,然后在必要时转移到应用程序。
  • 嗯,不知道 Opus 在 Mozilla 中——但仍然无法获得多播。话虽如此,我会强烈建议不要尝试浏览器实现。根据您的需求,您最好直接使用独立应用程序。
  • 有什么可以帮助您在设置的服务器端提供帮助的吗?这是我的第一个自定义音频服务器设置...
猜你喜欢
  • 2013-07-26
  • 2021-12-07
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 2020-06-20
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多