音频和视频大众流媒体
近期,Linux 在主流媒体中获得了广泛关注。这种宣传对于 Linux 爱好者和拥护者来说既是福音,也激起了那些可能刚刚开始了解这个了不起的操作系统的人们的好奇心。我非常高兴看到 Linux 的普及程度日益提高。然而,看到大众媒体的关注与 Linux 在日常使用中的具体例子相辅相成总是令人欣慰的。作为有幸因热爱而获得报酬的个人之一,我想通过分享我们在环球媒体公司如何使用 Linux 的详细信息来提供这样一个具体的例子。
环球媒体公司 (http://www.globalmedia.com/) 是一家上市公司,它构建了一个私有网络,用于通过互联网传输实时音频和视频。对于希望通过电子商业流式传输其内容和/或提供商品的网络合作伙伴,我们提供了一个基于 Linux 的现成基础设施。

图 1. 网络工程团队
我在网络工程团队工作(见图 1),Linux 是我们工作的核心和灵魂。对 Linux 的这种承诺归功于我们的技术主管 Marco Belmonte。当高层在规划整个项目时,Marco 向他们介绍了 Linux。他向他们展示了 Linux 将如何提供可靠、可扩展、灵活的网络,并且具有成本效益。我们从未后悔。
为了通过互联网进行广播,我们会向网络合作伙伴发送一个 Linux 盒子。这通常是广播电台,但也可能是任何拥有音频源的实体。该盒子通过我们的私有帧中继线路连接到我们的网络运营中心 (NOC) 和互联网接入点。通过 NOC,我们可以监控、控制、配置和更新所有远程站点。
这些盒子由安装在 Abit socket 370 ZM6 主板上的 Intel Celeron-400 芯片和 64MB 的 RAM 组成。主板配备了 Winbond 监控器,以确保我们可以检测到入侵并跟踪温度、电压和风扇速度。这非常重要,以便我们可以预防可能导致盒子崩溃的问题——没有广播公司喜欢静默。音频馈送通过 SoundBlaster 128 声卡进入盒子。编码后的信号通过 Sangoma S508/FT1 WAN 卡离开盒子。14.4 Hayes 兼容调制解调器允许我们在帧中继连接发生故障时执行紧急维护。

图 2. Sangoma WAN 卡
现在是特别感谢 Sangoma 科技公司的好时机。如前所述,Sangoma 是 WAN 卡(见图 2)的制造商,我们使用这些 WAN 卡将盒子连接到帧中继网络。Sangoma 也是少数几家从早期就认可并支持 Linux 的硬件制造商之一。在全球媒体的背景下,这种认可尤其恰当,因为他们花费了大量时间调整其软件,以便我们可以通过脚本而不是交互方式配置他们的卡。
回到我们的设置,编码盒子运行定制的 Linux 发行版。由于这些机器永远不会用作工作站,并且只需要少量服务,因此这些盒子被精简为核心库和实用程序。添加到这个精简后的发行版中的是特殊的配置和监控脚本以及用于数字化音频信号的软件。
为了避免在每台机器上安装我们的发行版的工作,这些盒子是从克隆磁盘构建的。磁盘的克隆和盒子的组装是外包的。承包商在输入我们指定的唯一标识符后,将盒子运送到新站点。此标识符用于在机器到达目的地后对其进行配置。
配置是通过自动化脚本在线完成的。我们选择这种方法有几个原因。首先,由于盒子直接从组装点发货,我们没有机会自己完成这项工作。其次,出于安全考虑,我们决定不向第三方提供配置信息的元素。接下来,我们希望盒子的设置和操作对于我们的客户来说尽可能简单:他们只需插入盒子并打开电源即可。很少有客户(如果有的话)会乐于在文本控制台上运行 Linux 命令。此外,将此工作留给客户将增加拼写错误和其他相关错误的可能性,这可能会让我们花费大量时间在电话上,试图调试问题。最后,手动配置机器是最好留给机器的苦差事。
自动化确保盒子能够快速且安全地配置和运行。收到盒子后,客户首先连接所有电缆,然后打开电源。从启动脚本中,配置客户端检测到盒子尚未配置,并联系我们 NOC 中的配置服务器。配置服务器使用远程盒子发送的标识符查询 PostgreSQL 数据库以获取所有适当的信息。一旦客户端完成自身配置,它就成为我们广播网络的一部分。从那时起,进入盒子的任何音频都可供网络上的听众使用。
我提到我们使用私有帧中继来接收音频信号。我们本可以简单地使用互联网来实现这一点,但为了尽可能确保信号质量,我们选择了私有网络,直到最终听众。使用互联网收集我们的信号会使我们受到拥塞和 IP 带宽竞争的影响。我们将向听众转发已经降级的信号。我们不仅仅想让听众到达目的地;我们希望让他们有格调地到达那里。
RealNetworks——环球媒体的合作伙伴之一——是我们连接互联网的桥梁。RealNetworks 将我们的音频流中继到他们全球分布的服务器网络。当听众请求我们的一个 URL 时,RealNetworks 会确定请求的来源并从最近的点传递流。因此,请求的流在到达用户播放器之前必须通过互联网传输的总路由部分被减少到最低限度。对于路由的其余部分,流通过专用高速线路传输。
RealNetworks 还为我们提供了编码模拟音频源的软件(它在 Linux 上运行)和环球媒体播放器。RealPlayer 和 RealPlayer G2 可以用于收听我们的流,但环球媒体播放器将流链接到网络合作伙伴的编辑内容和店面。
电子商务完全关乎 Web 服务器和数据库。除了提供最终用户看到的页面外,Web 服务器还协调接单、验证信用卡信息和订单履行。数据库包含有关可用商品以及填充所服务网页的静态和动态内容的所有信息。
在环球媒体增长的早期阶段,第三方处理了这部分业务。现在环球拥有完整的技术团队,其 Web 服务已转移到内部。Web 开发公司当时在 NT 上使用 Cold Fusion、SQL Server 和 Internet Information Server 的组合。我们发现整个情况不太理想;它非常消耗资源且速度缓慢。可扩展性也是一个问题。
然而,在转移系统时,最直接的担忧是保持其运行。现在情况已经相当稳定,将工作迁移到 Linux 的任务已经开始。将静态内容迁移到 Linux 上的 Apache 是第一阶段。接下来,数据库的部分内容将从 SQL Server 迁移到 Linux 上的 Texpress。最后阶段将是财务交易的转移。
虽然 Texpress 是一个商业数据库,但它值得快速评论一下。它使用一种有趣的文本搜索算法,构建位模式索引。速度极快,值得在某个下雨天研究一下。
正如广播网络的大部分位于远程——靠近音频源——电子商务网络的大部分也位于远处,靠近大型管道。网络运营中心负责控制和监控所有这些远程机器。
对于监控,我们依赖于 SNMP(简单网络管理协议)和良好的旧日志文件。我们使用方便的小工具 swatch 实时扫描日志。当记录感兴趣的消息时,swatch 会启动规定的操作。SNMP 通过允许更细粒度地查看每个盒子的内部,来补充和完善日志文件。
SNMP 是 NOC 中我们不得不寻找开源之外解决方案的一个地方。在广播网络上,SNMP 链路的管理端在 Sun 工作站上使用 HP OpenView。我们确实研究了各种用于监控网络和系统信息的 Linux 解决方案。大多数功能在各处都可用,但并非在单个工具中,并且并非总是稳定。音频编码器盒子中的硬件状态以及编码软件和帧中继链路的状态对于我们业务的成功至关重要。我们需要一些可以接收陷阱、发现网络节点、轮询网络节点的东西,并且考虑到涉及的大量节点,可以图形化地表示整体。商业软件似乎是唯一的解决方案。
然而,SNMP 系统的其余部分在开放系统上运行。在电子商务方面,节点较少且轮询就足够(即不使用陷阱)的情况下,NetSaint 执行监控。当然,Linux 盒子都使用 GNU SNMP 代理。事实上,正是开放代码使我们能够从音频盒子接收 DMI(桌面管理接口)信息。SNMP 源代码经过修改,因此我们可以轮询编码器盒子以获取有关 CPU 温度、风扇速度和电压的信息。
感谢 Linux,我们无需向供应商提出任何昂贵的维护请求。有了这些优秀的免费工具,我们可以在客户甚至不知道任何问题的情况下检测和修复故障。
在结束之前,还需要提到 Linux 的最后一个功能。当音频信号通过我们的网络向互联网移动时,我们对管道上的流量进行整形。声音质量取决于可用带宽。我们商业计划的基石之一是高质量的声音;因此,我们必须尽可能地保护管道中的声音。音频信号与监控和管理流量共享管道。在正常情况下,这不应该构成问题。但是,如果日志活动突然激增或将新的软件包发回线路,则流量整形使我们能够确保它不会削减客户广播所需的带宽。
环球媒体公司为互联网听众制作尽可能最好的音频信号,同时为广播公司提供具有成本效益的解决方案。如果没有 Linux,我们不可能如此廉价有效地实现我们所取得的一切成就。开源允许极大的独立性。如果系统是使用商业操作系统构建的,我们将受到供应商定制的成本和延迟的影响,前提是供应商甚至愿意考虑进行任何修改。
许多企业仍然对 Linux 和其他开源软件抱有怀疑态度。它仍然经常被视为不适合实际工作的黑客玩具。我们希望我们的经验将有助于消除这些误解,并鼓励其他人将 Linux 视为可行的工作工具。
Gerald Crimp (gcrimp@globalmedia.com) 是加拿大不列颠哥伦比亚省温哥华环球媒体公司的软件工程师。Debian 是他首选的发行版。他期待着 Linux 占领桌面的一天。