RTMP是flash player从视频服务器接收视频的一种TCP协议。adobe公司已经公布了rtmp协议的大部分内容,虽然还有一些细节未公开,不过对于我们自己开发一个rtmp服务器已经足够了,即使不开放,很多开源的项目已经把协议的很多细节搞清楚了。
目前很多视频监控系统前端设备都是IP摄像头,而这些摄像头视频格式大部分都是MPEG4/h.264格式,最新的flash player对于这两种格式都支持。所以把IP摄像头的音视频数据接收然后发送给rtmp服务器,rtmp服务器再按照rtmp协议打包转发给flash player,就能实现在flash player中播放IP摄像头的音视频了。
越来越多的视频监控系统都有B/S的页面,这能极大方便方便用户的使用。然而大部分B/S页面中的视频显示部分都是采用ACTIVEX控件的方式从服务器获取音视频,这又大大降低用户使用的方便性了。有以下缺点:
1. activex控件需要下载,首次浏览这个页面的时候会比较慢。
2. 使用activex控件需要权限,默认的IE浏览器会弹出提示框安装,并且如果activex控件未通过微软的数字签名的话,IE浏览器也是不让安装的,需要设置IE浏览器的安全级别,才能安装。普通用户操作起来会很麻烦。
3. activex控件只能在IE核心的浏览器上使用,无法支持chrome、firefox等浏览器,而IE市场份额越来越小,已经跌至50%以下。使用activex控件的方式会强迫用户使用IE浏览器,用户体验不好,更直接cancel掉了非windows操作系统用户访问监控系统的权力。
相反,RTMP流媒体协议有以下优点:
1. 90%以上电脑上都安装有flash player,可以不用下载,直接观看监控系统的音视频。chrome更是内置了flash player。跟操作系统无关,只要安装了flash player的系统都能观看。
2. 没有权限要求,直接看。
3. 支持直播、点播(对应视频监控的记录回放)
当然RTMP协议也有一些局限,RTMP基于TCP协议,而TCP协议实时性不如UDP,也占用带宽。adobe公司开发的基于UDP的RTMFP协议能很好的解决这些问题,rtmfp协议未公开,不过网上也有些资料,相信不久就能真相大白。