因为插件可以获得和桌面应用程序几乎一样的权限,安装完插件之后打开web时,web代码可以调用插件肆意的读写电脑本地数据。
这几年微软、谷歌、苹果、Mozilla等各大浏览器厂商也意识到了浏览器插件的安全问题,开始在新发布的浏览器中限制第三方插件的使用。

解码器选择:

1. js解码HTML5播放

项目描述:

大概流程:利用websocket传输未解码数据,送入ffmpeg库解码,回调至上层利用canvas出图。

  • 视频传输:使用websocket协议;
  • ipc后端推流:使用C语言编程;
  • web前端收流:使用js语言;(如何收流,拆流,解析,送数据)
  • web的视频解码库:使用js语言,通过emscripten工具把C语言解码库代码编译成js;
  • 解码后的YUV数据:转换为RGB后推到HTML5的canvas播放。

由于找不到合适的开源js解码器代码,所以选用C语言的解码器,通过emscripten工具把C语言解码库编译成js库。

emscripten安装:

这个工具的安装非常麻烦,过程会报很多错误,需要预先安装很多软件,需要一定耐心。没关系,根据报错提示一个个排除,最后就可以成功的。emscripten安装成功后,生成交叉编译器emcc,即可编译静态库。

libffmpeg.js的编译->编译ffmpeg.js+ffmpeg.wasm库->js调用ffmpeg.js中的函数(使用Moduole.cwrap,将API导出,让C语言中的函数可以在JS中调用,此时FFMpegContextCreate 等均可在js文件中调用,上面讲到websocket接收到未解码数据后,触发onmessage函数,connect_http_read,调用Decode,数据解码后,返回解码数据,回调到上传出图。)->canvas出图(imgData即为解码后的rgb数据,将数据传到canvas显示即为一帧图像)。

测试效果:

使用最新的Firefox浏览器
解码H264的1080P分辨率时,延时可以控制在几百毫秒以内,测试的最大分辨率是2592X1944,也比较实时。
解码H265的1080P分辨率时,比较负荷比较大,会有卡顿现象。

2.WebAssembly解码HTML5播放

项目描述:

  • 视频传输:使用websocket协议;
  • ipc后端推流:使用C语言编程;
  • web前端收流:使用js语言。
  • 视频解码库:使用WebAssembly实现,js把取到的媒体数据通过封装好的接口传递给WebAssembly解码。
  • 视频播放使用HTML5的canvas播放:js获取到WebAssembly解码后的YUV数据,转换为RGB后在canvas上播放。

编译方法:

  1. 编译ffmpeg生成静态库
  2. 编译静态库生成libffmpeg.wasm和libffmpeg.js
  3. 在js中调用API(编辑脚本涉及的API需要在C语言中进行函数的声明)

接口调用:

  1. 导入libffmpeg.js   (importScripts('libffmpeg.js');  libffmpeg.js会去加载libffmpeg.wasm)
  2. 接口封装:括号内的参数中,第一个number对应C函数的返回值,最后面的[]的成员对应C函数的参数;参数数据类型number可以对应C语言中的int或是指针等,大部分都是number;参数数据类型array是js中的数组,对应到C函数参数中也是指针,我使用的是unsigned char*;array与number不同的是,array传递到C函数中,可以通过这个指针地址取到传递过来的数组的数据。而number传递过来只是一个数字,即使转成指针地址也取不到数组内容的数据

web无插件解码播放H264/H265相关推荐

  1. web无插件解码播放H264/H265(WebAssembly解码HTML5播放)

    我之前写过一篇<web无插件解码播放H264/H265(js解码HTML5播放)>,与本文的项目意义基本一致,不同的是实现方案有一定差异.之前介绍的是纯JS解码,本文介绍WebAssemb ...

  2. web无插件解码播放H264/H265(js解码HTML5播放)

    项目意义: 长久以来,安防领域的网络摄像机(IPC)的WEB视频直播都依赖于浏览器插件,IE浏览器使用ActiveX插件,Chrome和Firefox浏览器使用NPAPI插件. 之所以开发浏览器插件来 ...

  3. GB28181设备接入实现web无插件多屏直播

    视跃GB28181平台web无插件直播的实现原理:后台是把GB28181的ps流转化成http flv,为了少做无谓的推拉,没有用rtmp推nginx(srs),自主实现ps流转化为了http flv ...

  4. 海康摄像头web无插件3.2,vue开发,Nginx代理IIS服务器

    在vue中实现海康摄像头播放,采用海康web无插件3.2开发包,采用Nginx代理IIS服务器实现: 1 摄像头要求,支持websocket 2 Nginx反向代理的结构 3 vue前端显示视频流代码 ...

  5. 基于realgbs的GB28181接入设备的超低延时web无插件直播

    现在GB28181的平台很多,但是能够实现GB28181接入设备的web无插件超低延时的直播确实不多,或者叫没有.有的小公司甚至直接使用开源的工具去实现GB28181转webrtc的直播,前期技术调研 ...

  6. ubuntu下播放h264,h265文件

    ubuntu下播放h264,h265文件 vlc可以播放h264,h265文件, 并且既可以在win下,可以在ubuntu下 安装vlc 在ubuntu软件中心,搜索vlc,既可以看到vlc medi ...

  7. 【海康威视】前端开发:【2】Web无插件版Demo测试

    一.前言 最近看见海康威视官网新增了一个 WEB无插件开发包 V3.2: 支持高版本谷歌.火狐浏览器,同时需要设备支持Websocket取流.无插件版本需要使用nginx代理服务器. 于是下载了一个来 ...

  8. 海康大华等安防摄像机采用通用RTSP协议流转RTMP推送至Web无插件播放展示的流程方法

    行业现状 中国互联网化的进程已经越来越快了,各个行业都在进行着互联网化的改造,流媒体.音视频,作为跑在互联网上最大量级的数据类型,其从编码方式到传输协议到终端兼容都成为各家标准抢占的高点,RTMP.H ...

  9. 安防视频之web无插件播放视频

    本博文是个宣传帖子,主要介绍如何把安防摄像机的视频转成无插件Web播放. 安防摄像机主要通过rtsp协议获取视频码流. Web预览通过Hls协议进行预览. 结构图如下: 这里我们提供一个转码服务,实现 ...

  10. EasyNVR实现海康、大华NVR硬盘录像机Web无插件播放方案(支持取特定时间段视频流)

    本文转自:https://blog.csdn.net/black_3717/article/details/79872725 背景说明: 由于视频自身的直观性和便利性,对于传统安防行业,摄像机的直播和 ...

最新文章

  1. 请求拦截_实战SpringCloud通用请求字段拦截处理
  2. 信息系统项目管理师-项目采购管理知识点
  3. 初次运行git前的配置
  4. 任意用户密码重置的10种姿势
  5. linux c 11 运行库,11.1.3 运行库与I/O
  6. 类对象作为函数参数进行值传递
  7. 递归——幂次方(洛谷 P1010)
  8. 机器人图形变变变_幼儿园中班公开课数学教案《图形变变变》含反思
  9. Hands-on Lab (6) - 配置Gogs的Webhook
  10. 【问】如何应对关系型数据库中列的不断增加
  11. 对于JQuery Mobile的介绍
  12. linux软件中心无法安装软件,linux中软件的安装
  13. C语言Float的存储大小
  14. python与乐高ev3结合_利用python语言编程控制LEGO EV3
  15. 【项目源码】JavaWeb网上购书系统
  16. 阿里云服务器价格表,阿里云服务器最新收费标准大全
  17. feedburner怎么用_新手RSS订阅使用指南
  18. 下载编译chromium
  19. JeecgBoot 3.4.3-GA 版本发布,开源免费的企业级低代码平台
  20. python热力图参数_python3.5数据处理——百度地图热力图传值

热门文章

  1. 工欲善其事,必先配置好kali
  2. 金蝶云星空与聚水潭系统对接方案(聚水潭主管库存)
  3. 润增长69.6%,新东方的中年危机过去了吗?
  4. 某公司“高级项目管理师”内训圆满结束!
  5. 使用windows自带任务计划管理程序定时调用Kettle作业
  6. MATLAB 极点图
  7. webpack配置多种打包方式
  8. selenium + appium 自动化测试
  9. 剑侠情缘状态hdu 4558 剑侠情缘(dp, 西山居复赛1第2题)
  10. NCNN在linux环境中的安装编译(Build for Linux)