播放器:摄像头的RTSP视频如何用H5 video标签来播放

随着各行各业安防系统的建设,激增了摄像头视频web播放的需要。

为此需要一个web播放器来播放摄像头的视频。

想做好一个能兼容所有浏览器和所有摄像头编码的web播放器存在很多冲突点。

  • 支持h5的浏览器只支持h264和aac编码,而摄像头存在各种编码;
  • 摄像头获取流是通过rtsp或GB28181协议,而浏览器只支持http和websocket;
  • 浏览器存在PC、移动端、小程序差异,如何设计一个播放器既能解决编码问题也能解决不同浏览器环境问题;
  • 还有一个奇葩浏览器IE如何兼容。

方案对比

编号 方案 优点 缺点
1 Active控件 不需要服务器转协议、兼任各种摄像头编码,大部分摄像头厂家采用此方案 仅支持IE及低版本Webkit内核浏览器
2 后台转协议,如转成HLS/DASH/http-flv协议 此方案兼容H5 Video标签,成熟的开源播放器较多 此方案有两个缺陷,一是由于浏览器解码限制导致摄像头只能采用H264+AAC编码,而很多摄像头采用H265+G711编码,二是多了个后台协议转换程序,增加了运维复杂度
3 后台实时转码,转成H264+AAC编码 同方案2,且弥补了方案2不能播放非H264+AAC摄像头视频问题 此方案最大问题是需要后台有大量的计算资源,一般一台服务器只能同时转码很少路数的视频,在并发大时,后台需要部署大量服务器用于转码
4 浏览器用wasm/asm解码非H264+AAC摄像头的视频 最理想方案,不需要复杂的后台、不需要在本机安装插件程序,兼容各种编码格式,兼容PC、移动、小程序等浏览器 理想很丰满,现实很骨感,wasm解码性能比native低几十倍,只能满足低分辨率、低帧率的视频解码
5 PC上安装native程序将解码后的数据送到浏览器展示 解码效率高、不用后台资源、兼容各种编码格式 初次使用需要安装一个程序在PC后台运行,不支持移动端、小程序的浏览器

方案选择

小孩子才做选择题,成年人当然是全都要。

特性

  1. 所有条件下都可使用:同时支持方案1~5,满足移动、PC、小程序、IE、非IE,各种音视频编码;
  2. 零学习成本:使用方式与H5的video标签一致。

方案设计

采用video.js+扩展的方式,video.js自带方案2和3,需要为其扩展1/4/5。

扩展单独实现为一个js库,与video.js搭配使用,不破坏其原有结构。

如果视频源为HLS/DASH/HTTP-FLV/MP4则直接走video.js。

如果视频源为RTSP则走扩展的js库,此时video.js只是扩展js库的API wrapper,也就是在使用者角度看是走的video.js API,但实际调用的是扩展js库的API。

扩展js库设计

扩展库由1或2个worker线程+胶水API组成

worker线程流程:

  • 接收从websocket/http chunk来的数据;
  • 解封装;
  • 如果是解码后的数据,则送到UI线程进行渲染;
  • 如果需要解码,则送到wasm解码线程进行解码,由wasm解码线程将解码后的数据送到UI线程进行渲染。

胶水API:
完成与video.js的整合。

开始使用

<link href="https://vjs.zencdn.net/7.11.4/video-js.css" rel="stylesheet" />
<script src="https://vjs.zencdn.net/7.11.4/video.min.js"></script>
<script src="videojs-rtsp.min.js"></script>

<video id="my-video-1" class="video-js vjs-big-play-centered" controls forcesize width="640" height="240"
    data-setup='{"techOrder": ["html5","rtsp"]}'>
    <source src="rtsp://admin:admin@10.10.20.2" type='video/rtsp' />
</video>

说明:

  • 多引入了一个videojs-rtsp.min.js,此库为video.js的扩展;
  • 多了一个forcesize属性,用于设置图像是否按原比例,true为不按原比例,拉伸充满窗口,默认为false;
  • data-setup属性中的techOrder增加rtsp的选项
  • source 为视频源rtsp地址,不能多个,只有一个,source中的type必须为video/rtsp
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容