项目意义:
长久以来,安防领域的网络摄像机(IPC)的WEB视频直播都依赖于浏览器插件,IE浏览器使用ActiveX插件,Chrome和Firefox浏览器使用NPAPI插件。
之所以开发浏览器插件来收流、解码、播放IPC的实时视频,是因为早期HTML的发展过于缓慢,在纯web代码无法实现的情况下开发者只能使用插件来辅助。
此方法的弊端显而易见,比如用户使用不方便,打开web之后需要点击下载并安装插件才可以播放IPC的实时视频,而且很多用户会担心第三方插件的安全性。
原本出于安全考虑,浏览器把web代码的运行限制于沙箱之中,并限制web代码很多本地接口的权限,营造出比较安全的网络环境。
浏览器插件的设计违背了这个初衷,因为插件可以获得和桌面应用程序几乎一样的权限,安装完插件之后打开web时,web代码可以调用插件肆意的读写电脑本地数据。
这几年微软、谷歌、苹果、Mozilla等各大浏览器厂商也意识到了浏览器插件的安全问题,开始在新发布的浏览器中限制第三方插件的使用。
现在Edge、Chrome、Safari、Firefox等浏览器已经不支持NPAPI插件,只剩下IE浏览器还在支持ActiveX插件,导致IPC的web页面只能在IE内核的浏览器播放实时视频。
所以实现web无插件实时播放IPC的H264/H265视频十分重要。
项目描述:
视频传输使用websocket协议,ipc后端推流使用C语言编程,web前端收流使用js语言。
web的视频解码库使用js语言,通过emscripten工具把C语言解码库代码编译成js。
解码后的YUV数据转换为RGB后推到HTML5的canvas播放。
解码器选择: