Live555 + Darwin Streaming Server(DSS)视频直播方案
function writeSpace( num){ var i;
for(i = 0; i < num; ++i)
{ document.write(' ' ); }
}
该方案的实现原理是,通过Live555的DarwinInjector Class,把本地采集的音频和视频流,注入到DSS服务器。客户端就可以直接访问DSS服务器(不是Live555所在的采集端)来访问实时流媒体数据。
这种方案的优点:
》保证了单台DSS服务器并发量可以上几百。
》DSS服务可以像承载点播一样,实现直播。
》支持多路直播,就跟增加一个点播文件一样简单。
缺点:
》延时一般需要5秒左右
》直播集群支持节点受限,一台PC运行Live555采集端可同时注入的DSS服务器数量不超过5台
首先需要修改DSS服务端配置:
这里需要设置一下/usr/local/movies/目录的QTSS访问权限,允许写入:
修改DSS配置,增加文件:vi /usr/local/movies/qtaccess,增加以下几行
require any-user
require any-user
基本原理图如下:
writeSpace(38); /—-【客户端 1 RTSP Client(例如VLC)】
【采集客户端调用Live555 DarwinInjector】 —-> 【DSS 服务器 192.168.1.22】《—–【客户端 2 RTSP Client(例如VLC)】
writeSpace(38); \—-【客户端 N RTSP Client(例如VLC)】
方案的实现流程,用伪代码来说明:
0. 调用live555中已有的类创建Darwin i[......]
为Darwin Streaming Server扩展TS文件格式支持
众所周知,达尔文只支持mp4,3gp,mov等有限几种格式,连国内使用非常广泛的TS文件格式都不支持,实在是一种缺憾。
我跟列位一样,最近一年以来都有心想扩展ts格式,但一直畏惧自己才疏学浅,在鼎鼎大名的达尔文身上动刀子,有种自不量力之感!
网上看过最有用的一篇文章是这位仁兄的:
http://blog.sina.com.cn/s/blog_6a4c492f0100pffv.html
这篇文章很有用,但我发现最有用的还是Darwin Streaming Server源码中的子模块QTSSRTPFileModule,最具有参考意义:DarwinStreamingSrvr6.0.3-Source\APIMod[......]
CentOS 安装Darwin Streaming Server 6.0.3
以下是来自一个国外网站的自动化安装Darwin Streaming Server 6.0.3(目前最新的DSS版本)的脚本,我就更改了三个补丁文件的URL地址(原来的已无效),希望让各位少走弯路
如果wget下载DSS的安装文件太慢,可以直接用迅雷下载后上传到服务器,迅雷下载会很快!
#!/bin/bash
groupadd qtss
adduser -s /sbin/nologin qtss -g qtss
wget http://static.macosforge.org/dss/downloads/DarwinStreamingSrvr6.0.3-Source.tar
tar -xvf Dar[......]