html播放rtsp流,浏览器播放rtsp视频流解决方案

最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。

要实现这个目的,可以采用的方案非常得多,有商业的也有开源的,这里主要列举一些开源的方案。这里的方案都是我尝试过了的,有些成功,有些没成功。但是因为每个项目情况不同,这次没成的方法,换个项目也许就能成。

方案一: html5 + websocket_rtsp_proxy 实现视频流直播

实现原理

51fc14174e542e52d34e52d3ba41e7e6.png

实现步骤

服务器安装streamedian服务器

客户端通过video标签播放

var errHandler = function(err){

console.log('err', err.message);

};

var infHandler = function(inf){

console.log('info', inf)

};

var playerOptions = {

socket: "ws://localhost:8088/ws/",

redirectNativeMediaErrors : true,

bufferDuration: 30,

errorHandler: errHandler,

infoHandler: infHandler

};

var html5Player = document.getElementById("test_video");

html5Player.src = "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov";

var player = Streamedian.player('test_video', playerOptions);

window.onbeforeunload = function(){

player && player.destroy();

player = null;

Request = null;

}

}

复制代码

注意:测试时先从官网申请license key,否则socket 只能识别localhost和127.0.0.1

优缺点

优点:实现比较简单

缺点:收费的,免费版有很多限制

参考链接

方案二:ffmpeg + nginx + video,rtsp转rtmp播放

rtmp是adobe开发的协议,一般使用adobe media server 可以方便的搭建起来;随着开源时代的到来,有大神开发了nginx的rtmp插件,也可以直接使用nginx实现rtmp

rtmp方式的最大的优点在于低延时,经过测试延时普遍在1-3秒,可以说很实时了;缺点在于它是adobe开发的,rtmp的播放严重依赖flash,而由于flash本身的安全,现代浏览器大多禁用flash

实现步骤

注意:linux系统需要安装 nginx-rtmp-module 模块,Windows系统安装包含rtmp的(如nginx 1.7.11.3 Gryphon)

3. 更改nginx配置

rtmp{

server{

listen 1935;

application live{

live on;

record off;

}

application hls{

live on;

hls on;

hls_path nginx-rtmp-module/hls;

hls_cleanup off;

}

}

}

复制代码

ffmpeg转码

ffmpeg -i "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov" -f flv -r 25 -s 1080*720 -an "rtmp://127.0.0.1:1935/hls/mystream"

复制代码

video 播放

video

var player = videojs('test_video', {"autoplay":true});

player.play();

复制代码

注意:使用谷歌浏览器播放时,需要开启flash允许

参考链接

方案三:ffmpeg + video,rtsp转hls播放

HLS (HTTP Live Streaming) 直播 是有苹果提出的一个基于http的协议。其原理是把整个流切分成一个个的小视频文件,然后通过一个m3u8的文件列表来管理这些视频文件

HTTP Live Streaming 并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的时间延时。在客户端,至少在一个分段媒体文件被完全下载后才能够开始播放,而通常要求下载完两个媒体文件之后才开始播放以保证不同分段音视频之间的无缝连接。

此外,在客户端开始下载之前,必须等待服务器端的编码器和流分割器至少生成一个TS文件,这也会带来潜在的时延。

服务器软件将接收到的流每缓存一定时间后包装为一个新的TS文件,然后更新m3u8文件。m3u8文件中只保留最新的几个片段的索引,以保证观众任何时候连接进来都会看到较新的内容,实现近似直播的效果。

这种方式的理论最小延时为一个ts文件的时长,一般为2-3个ts文件的时长。

实现步骤

ffmpeg转码

ffmpeg -i "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov" -c copy -f hls -hls_time 2.0 -hls_list_size 0 -hls_wrap 15 "D:/Program Files/html/hls/test.m3u8"

复制代码

ffmpeg 关于hls方面的指令说明

-hls_time n: 设置每片的长度,默认值为2。单位为秒

-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5

-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量

-hls_start_number n:设置播放列表中sequence number的值为number,默认值为0

video 播放

video

var player = videojs('my_video_1', {"autoplay":true});

player.play();

复制代码

参考链接

方案四:VLC插件播放

播放步骤

下载安装vlc

浏览器播放

复制代码

优缺点

优点: 可以直接播放RTSP,无需任何中介服务器的帮助

缺点: 需要手动安装插件; 基于NPAPI,不被最新的 Chrome 和 Firefox 支持

如果你项目的其他功能都能兼容客户电脑上的 IE 浏览器,这个方案就是首选。

参考链接

其他方案

WebRTC

WebRTC 是支持网页浏览器进行实时音视频的一套API,例如:HTML5 通过 webRTC 直接调用摄像头,但是如果要实现远程视频流的显示,则需要将 RTSP 转换为 WebRTC 流,供 web 端显示。

h5stream

参考地址:

GB28181

参考地址:

写的不清楚的地方,请自行百度,网上案例很多,有什么建议可以随时提出来交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本科计算机专业在车辆段,机电与轨道车辆工程系2021届毕业生参加成都铁路局车辆段及电务段认知实习...

2020年10月28日,在机电与轨道车辆工程系专业教师及辅导员们的带领下,轨道交通学院机电与轨道车辆工程系2017级本科车辆工程专业、机械设计制造及其自动化专业、2018级专科城市轨道交通车辆技术专业共108名学生,以及2017级本科电气工程专业45名…

java参数注解pam_吃透Java基础十:注解

一、什么是注解官方定义:注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。注解有许多用处,主要如下:提供信息给编译器:编译…

广州计算机操作员培训,汕尾市计算机操作员报名考试时间地址及培训入口

生活习惯越来越多的计算机进入了人们的日常生活,随着计算机价格的逐步便宜,越来越多的家长为自己的孩子购置了计算机,但是计算机目前在我们的日常生活中,却没有扮演一个下面的角色,现在家庭中的计算机一般都是作为娱乐…

go get如何删除_Go 每日一库之 xorm

简介Go 标准库提供的数据库接口database/sql比较底层,使用它来操作数据库非常繁琐,而且容易出错。因而社区开源了不少第三方库,如上一篇文章中的sqlc工具,还有各式各样的 ORM (Object Relational Mapping,对象关系映射…

浮点加法器计算机组成原理,计算机组成原理 第二章运算方法与运算器

第二章运算方法与运算器运算方法:指算术(四则)运算和逻辑运算,在运算器的实现方法,而实现这两种运算的硬设备就是算术逻辑部件ALU(Arithmeticand Logic Unit)或称运算器由于逻辑运算及实现较简单,所以本章主要讨论计算机中算术四则…

wordpress添加html媒体文件,WordPress“添加媒体”文件时只显示上传到当前文章的附件图片...

最近子凡把很大一部分精力都分散在了泪雪建站的改版和泪雪网的运营中去了,随着泪雪网的定位和内容的新增,网站也需要有很多细节的升级,而在今天就给大家分享一个 WordPress 如何在编辑文章时“添加媒体”中默认只显示上传到本文中的附件的方法…

世界上最大的计算机硬盘,全球我最大 忆捷A600 2TB移动硬盘评测

评测工程师简介:PConline评测工程师:韩松评测工程师点评:移动领域里面的新霸主,为需要安全的人士提供了一个全新的移动理念。集安全性、技术性、容量、兼容性、稳定性、散热性等重要指标于一身。可以说忆捷A600绝对是移动硬盘领域…

tplink连接服务器失败_管家婆财贸双全连接失败,服务器端没有找到加密狗

管家婆财贸双全连接失败,服务器端没有找到加密狗管家婆财贸双全找不到狗判断步骤1、先判断电脑能否识别管家婆财贸双全加密狗我的电脑--右键--属性--硬件--设备管理器--通用串行总线控制器(或人体学接口设备)看有没有这个 SafeNet Inc. USB Key 出现,插上…

2020年秋计算机科学导论,南开大学《主干课1-计算机科学导论》2020秋主干课考试...

试卷总分:100 得分:303 R- k9 d3 ^1 } F一、单选题 (共 10 道试题,共 20 分)- z" x3 C% Z7 V |9 D p5 s1.数字836的基数可能是( )3 D) j2 h- l N OA.2" D# H% r2 b3 ]; d" iB.57 E; n, U4 v# |; L4 k% r4 u- QC.78 x) x" r3 r; y6 A2 oD.10) X3…

两直线平行交叉相乘_人教版初中数学七年级下册 平行线判定2公开课优质课课件教案视频...

平 行 线 的 判 定 一、教材分析1、主要内容及其地位本节的主要内容是平行线的判定公理及两个判定定理,由分析画平行线的过程得知,画平行线实际上就是画相等的同位角,由此得到平行线的判定公理——“同位角相等,两直线平行”&…

相关系数矩阵计算_corrplot包:相关性矩阵可视化

今天学习下相关性矩阵的可视化,可以用来可视化相关性矩阵的包有corrplot包、corrgram包、GGally包、ggcorrplot包等,这些包在大部分情况下都可以满足需求。今天先来学习corrplot包的使用,后面几天有空会详细讲解下另外三个包。目 录1. 安装和…

pat根据中序遍历和先序遍历_[leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树...

【题目描述】根据前序遍历和中序遍历树构造二叉树.在线评测地址:九章算法 - 帮助更多中国人找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧​www.jiuzhang.com【样例】样例 1:输入:[],[] 输出:{} 解释: 二叉树为空…

java中审核订单流程图_「数据架构」数据流程图:实例-订餐系统

数据流图(DFD)提供了系统内信息流(即数据流)的可视化表示。通过绘制数据流程图,您可以了解由参与系统流程的人员提供并交付给他们的信息、完成流程所需的信息以及需要存储和访问的信息。本文以一个订餐系统为例,对数据流图(DFD)进行了描述和说明。食品订…

jsp项目放入宝塔windows环境_商业裂变,之项目技术实战(第八节:宝塔面板介绍)...

一、宝塔简介:宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。例如:创建管理网站、FTP、数据库,拥有可视化文件管理器,可视化软件管理器&…

es文件浏览器smb服务器,ES文件浏览器怎么连接电脑SMB,可以参考这篇文章

ES文件浏览器是一款多功能的手机文件/程序/进程管理器,可以在手机、电脑、远程和蓝牙间浏览管理文件。是一个功能强大的免费的本地和网络文件管理器和应用程序管理器。ES文件浏览器与电脑进行局域网链接后可以管理电脑的文件,不只是复制,还可…

arm ida 伪代码 安卓 符号表_使用IDA动态调试及ARM指令学习笔记

本文介绍如何用IDA进行动态调试及部分ARM指令的学习。环境:已root的安卓手机一部,IDA pro 6.8,win7系统。下载样本app,并已确认可调试(debuggable true),下文不表:http://pan.baidu.com/s/1jG22HMY一 手机…

糖豆人显示此服务器正在进行游戏,糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼...

原标题:糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼自从糖豆人游戏开放以来,大批玩家涌入,造成糖豆人服务器拥堵,一度出现崩溃。隔三差五就会来一次。玩家正玩得兴起,突然的崩溃让玩家…

js中立即执行函数会预编译吗_面试官:聊聊对Vue.js框架的理解

作者:yacan8https://github.com/yacan8/blog/issues/26本文为一次前端技术分享的演讲稿,所以尽力不贴 Vue.js 的源码,因为贴代码在实际分享中,比较枯燥,效果不佳,而更多的是以图片和文字的形式进行表达。分…

如何卸载服务器的系统,卸载服务器的操作系统

卸载服务器的操作系统 内容精选换一换弹性云服务器卸载磁盘。弹性云服务器状态为stopped时支持系统盘(也就是/dev/sda挂载点)和用户盘的卸载,没有操作系统限制,也不需要在弹性云服务器内部安装vmtools。弹性云服务器状态为active态时有如下约束限制&…

修改了模板文件tpl如何立即生效_Views视图与模板

一、概述用户请求到视图流程:当有人访问我们django项目的时候 例如127.0.0.1:8000/polls/23,django首先到加载mysite.urls模块在mysite.urls中发现有urlpatterns变量,于是在其内按顺序进行匹配。当它匹配上了polls,就到匹配到的po…