音视频实时直播的解决方案
用户要求是能够支持200人在线的音视频实时直播,语音要求特别延时特别小,视频慢点可以接受,要基于浏览器。
主要考查点是语音的延时和累积延时(一开始延迟比较小,慢慢累加起来,越来越大)。
直播流程: 摄像设备(摄像头、摄像机、监控信号、电视信号->输出模拟信号)->采集设备(采集卡、电视盒,把模拟信号转换成数字信号)->编码软件(把数字信号编码成各种格式的数据)->媒体服务器(把数据流转发到播放客户端)->播放客户端(在用户的机器上运行,播放音频、视频信号)
方案选择有好几个:
1、自己开发一个语音直播ActiveX,视频用Windows Media Server。
2、Windows Media
3、葵花
4、Flash
评估下来:
1、自己开发语音当然没啥问题了,关键是要让用户装一个ActiveX,ActiveX还要买个证书进行签名,有点麻烦。
2、Window Media。 延时实在太厉害了,视频语音都是7-8秒到10秒。放弃了,据说有在Media Server二次开发的,有机会测试下。
3、葵花。经过测试和验证,延时不错,能定时把累计延时清掉。问题是要装ActiveX
4、Flash,很好很强大。以前觉得Adobe的Flash是用来玩玩的,技术含量还够,这次研究大为改观。下面讲详细点。
摄像设备:
采用了Sony的D100会议摄像机,用来做视频会议的摄像头。好处是可以自动对焦、云台控制。视频质量的确不错,DVD级别的了。 价格大概是6000上下。
清晰度好像比普通的USB摄像头好很多。
Sony也出来高清的摄像机了,不过一个几万块,预算高了点。
采集设备:
测试了电视盒也能用, 不过最后还是买了Osprey210的采集卡,400块上下。他们也有USB的,装在笔记本上比较方便。
USB摄像头就不用采集卡了。
编码软件:
Flash方案中有两个可选,Live Encoder和Flash客户端自己带的。
没看出很大区别。Flash客户端的可以编码设定参数。有空了基础测试
视频服务器:
有多个选择,Adobe自己的FMS, wowzamedia ,都是1万块左右的License,据说还有Red5?没测试过。
FMS 标准功能,测试下来,延时挺厉害的,还有延时累加问题。据说要服务器端写程序。
Wowzamedia,开始也是延时挺厉害的,不断地找资料(例如http://www.wowzamedia.com/forums/showthread.php?t=5008),没有失去信心,最后找到了一个解决方案,详细看客户端。
播放客户端:
Adobe和Wowzamedia的视频服务器都提供了标准的例子。
经过测试发现, VideoChat和LiveVideoStreaming的延时效果差别很大。 结论是用VideoChat改造就能满足要求了。
至此,从对直播一无所知到完成了一套解决方案的研究,耗时两个月,对Adobe的产品和战略大为佩服...
一个收获,看到了国外云计算的实际例子,Wowzamedia 已经在Amazon EC2上商业运营了,好像还蛮便宜的,http://www.wowzamedia.com/ec2.html。据说延时只有1秒?
另外一个收获, Adobe公开了标准RTMP http://www.adobe.com/aboutadobe/pressroom/pressreleases/200901/012009RTMP.html ,意味着我们也可以做一套FMS?