如何基于开源构架设计一个视频平台?


目标是使用开源工具创建一个管理和提供HTTP流媒体视频的架构。工具必须开源或免费的平台;架构设计必须满足可靠性和快速扩展的能力。分为两个部分:内容的准备和交付。

第一部分内容的准备:
分为三个部分:服务的管理 总线和工作者,如下图:

服务的管理:拥有协调所有服务,提供一个完整的功能,可以使用 Python, PHP, NodeJS, Java, Perl,也可以使用Kaltura 平台。
使用MySQL或Redis等数据库存储视频信息等元数据。

工作者:实现编码 打包和传送。
编码:使用 ffmpeg 和其不同的库包 (libfaac, libx264, …). 也可以使用mencoder

打包:打包时可能需要改变视频格式,转换工具如下:
MP4Box : to manage MP4 files or MPEG-DASH
f4fpackager : to generate HDS, you will need to deploy the HDS module for Apache in the delivery platform
mediasegmenter : to generate HLS
FLV2DTSC : to generate DTSC if you want to use MistServer (a solution I told in previous articles).

传送:最后将视频传送到目的地,使用协议 FTP, SCP, HTTP,这样可以将内容推送到交付存储空间。

如果希望提升冗余,增加平台的可靠性,建议引入Transcodem,有github项目。

第二部分:交付

现在视频资料已经存在交付存储空间,我们需要基于http协议流化这些内容(HDS, HLS, Smooth Streaming). 起初可以先架设一台服务器,我们的架构水平伸缩扩展到多台服务器,如下服务器软件:
(1)HTTP WEB服务器 : Apache, NGinx, Lighttpd 和不同插件(module origin from Adobe to stream HDS for example)

(2)媒体服务器 : Red5, MistServer

使用Varnish. 代理缓存可以支持高负载,如下图:

原文:How to create and architecture an open-source and/or free video platform ? | Video, Web, Technologie

参考:Netflix视频架构:
http://www.jdon.com/artichect/netflix.html
[该贴被banq于2013-07-09 07:29修改过]