关于HTML5中视频处理的API研究
最近一直想加个视频聊天的功能,flash虽然很强大,但我一直没有认真研究过,于是想在html5这方面进行下尝试。
开始时很简单,因为知道有个api接口可以直接获取摄像头设备,再将返回的流赋给video标签就可以了。很简单,网上也很多类似的代码。
视频聊天这个还是远远不够的,关键的是要传递到远程。同样,也是使用html5中的websocket技术,在服务端启动一个服务,然后由服务端去分发。
接着是分发什么样的数据。刚开始想的很简单,直接使用canvas获取video中的视频图像,然后将cavas中的图像数据发送给服务器端。
问题来了,传输数据量太大,一次有460k大小的数据传输,一般视频一帧的传输大小应该才30k,差了10倍!
需要做什么呢?需要做压缩,视频压缩。这里涉及到的就是一些私有技术了,很难在网络上获取很好的代码做参考。实现成本也比较高。
柳暗花明又一村
发现和getusermedia一起出现的,经常会出现webrtc这个词。网上一搜,查看一下,这个可比getusermedia强大了不知多少倍,是google开源的一个项目,视频会议系统!里面包括了视频采集,视频传输,视频显示等很多视频方面的技术。当然这个还不是我最关心的,而是开源项目的目的,是希望其它浏览器厂商能够将webrtc技术嵌入到浏览器中,形成行业标准。而且最新版的chrome和ff都已经有了javascript api,这样就可以达到我想要的视频聊天功能了,而不需要关心视频压缩技术。
还有值得一提,webrtc技术希望可以在互联网上实现即时通讯,这个也许将会改变很多的传统行业,也许出现的机遇也说不定。
webrtc还支持p2p,要逆天吗?!