全自动化“视频网站”视频制作与发布的分布式系统介绍 - 支持 Bitrate Switching(类似Smooth Streaming)
一、前言
从事视频后台开发工作已近三年,在掌握了必需的业务知识以及技术后,我思考着做出点成果,用来作为自己再就业时的简历或者前三个学年的主要成绩。本文我将就三大部分简单介绍这套系统的优势、特点,定能抛砖引玉;后续如果有心力,将具体介绍产品设计以及系统构架,以期与大家分享项目心得。
二、视频播放体系
播放体系,主要创新如下:
1、使用开源的 JW FLV Player,采用 Bitrate Switching 技术,使得播放器能够自适应带宽,自动选择合适的码流率进行下载。这是未来网络视频的方向,当前项目由于视频自动化制作的支持,已经成功应用该动态码流率技术。
2、实现了“动态电视墙”功能,完全支持视频立体式播放。即,多个视频同时播放,用户自由切换主次播放窗口,而不会浪费带宽(缘于 Bitrate Switching 技术支持)。
3、对不同场景的播放后台进行了统一。即,无论是PC,还是手机或者机顶盒(电视盒),其播放参数可完全一样,由播放器依据具体的屏幕大小、带宽限制等选择适当码流率进行下载播放。
这是我当前做的播放演示页面,注意播放器左上角动态码流率的提示(采用了 IIS 作为视频文件服务器,视频格式 .flv):
三、自动化视频制作体系
视频制作无非“下载”、“转码”、“备份(上传到流媒体服务器)”三大步骤。请看分布式系统设计示意草图:
该系统主要特点如下:
1、提供流程控制工具包(.net 版服务端/客户端工具,以及 java 版客户端工具),抽象并封装流程控制操作,以及提供其他常用管理工具,极大降低具体业务开发难度。
2、支持各个分布式节点的多目录管理(包括流媒体服务器)。这对提高文件检索性能极其重要。
3、支持多高宽、多码流率、固定分段时间的复合转码模式,为 Bitrate Switching 以及视频CDN技术提供片源上的保证。
4、因具有跨平台能力(java 版客户端工具包),支持与各种类型的流媒体服务器配合,适用场景广。
5、基于接口进行设计开发,插件化管理各工具组件,模块间松耦合,极易维护、扩展。
6、使用 ORM 、反射等技术,配置灵活,部署简单可复制。
《转码客户端》使用网络上提供的 ffmpeg 进行转码
《转码服务端》
7、基于可配置的流程控制中心管理,流程节点间相互独立、无耦合,便于业务更新、扩展。
8、基于抽象了的任务调度模型,任何视频的当前任务状态以及历史日志翔实,便于纠错、查询。且只需一个查询入口。
9、内置的超时、重试机制,可配置各流程节点超时时间以及重试次数上限,最大限制的降低制作失败率。
10、提供网络视频列表监视功能,支持无人参与的全自动化视频运营管理。
11、支持第三方视频无缝接入。
12、支持制作人员手工制作的各类视频无缝插入流程,且可以插入到任意流程节点(步骤)。视频制作任务创建过程简单,既可通过Web后台创建,也可以通过本地“流程节点客户端”进行文件夹监视自动上报。
《通过web后台创建任务》
《本地文件夹监视系统部署包》
四、组合模型的视频CDN体系
在视频制作过程中,视频已经被切割成固定时间长度的分段小视频文件,这是 CDN 调度的前提。通过 CDN 服务器分层管理,客户端播放器在请求视频或节目列表时,首先请求 CDN 服务器列表,由当前被请求的服务器(可能是源服务器,也可能是某级 CDN 服务器)以及客户端自己决定选定某 CDN 服务器进行服务请求。CDN 服务器在服务的同时,统计各类请求数据,然后根据这些数据,定时的更新播放列表或下载小视频文件,以期命中用户的下次请求。同时,定时获取源站的最新片源数据等,也是很好的缓存策略。
因为是小视频文件(包括节目列表等文本数据),所以传统的 http 下载模式足够稳定,无需任何其他接口的开发。又因为是简单的缓存源站(或上级 CDN 站点)的数据请求,各个 CDN 服务器区域自治,相对独立,开发执行性强,同时系统轻便、容易复制部署,对于无论多大的数据请求量,都能采用“分而治之”的策略进行应对。这样也为无止境的用户体验满意度提供了强有力的、可量化、平滑的保证。
五、后语
正如前言,该系统将是个名片,如果有公司感兴趣,只需提供 windows 2003/xp(IIS/Sql Server 2005) 机器一台或多台,笔者可通过远程连接的方式进行部署,以让人有直观感受。过些时日,我或许该制作一段视频,演示一下操作方式以及自动化流程,大概远比这文字来得生动有用。