web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!
本文转自:http://www.cnblogs.com/babosa/p/7355468.html
需求
问题:有没有flash播放RTSP的播放器?H5能不能支持RTSP播放?
答案:没见过,以后估计也不会有;
问题:可以自己做浏览器插件播放RTSP吗?
答案:可以的,chrome做ppapi插件,IE用ocx插件;
但是,兼容性太差了,开发成本过高。在PC web兼容性上面,目前最好的方案是flash或者H5,但是H5在IE比较低版本上面会存在不支持的问题,还是需要前端兼容切换成flash模式;在手机 web/微信兼容上面,毫无疑问,H5是唯一选择;
方案
那么问题来了,如何能够实现需求中的两点:
- PC上输出兼容性较强的flash需要的rtmp或者hls流或者http-flv流;
- 手机上输出H5标准的HLS(m3u8+ts)流;
其实目前市面上大部分的CDN方案已经提示了我们如何解决上述的问题了,那就是采用rtmp推流到rtmp流媒体服务器,同步输出:rtmp/hls/http-flv多种码流,再通过前端的兼容适配,就能完美地达到想要的方案,总结来说,需要通过几个步骤:
- RTSP拉流;
- 音视频转码(H.264 + AAC);
- RTMP推流;
- RTMP流媒体服务器;
- 前端兼容取流播放;
实现方法
1. RTSP拉流
目前市面上能非常兼容地拉取各个厂家的RTSP流的方案总结来说有两种:
- live555
- ffmpeg
两种都能比较不错地请求获取到各个厂家的摄像机码流,但从可操作的灵活角度上来说,live555更胜一筹,比如:我们遇到雄迈的某款摄像机需要在RTSP拉流的过程中,向摄像机定期发送OPTIONS保活报文,而我们遇到的某款海康的NVR在RTP over tcp取流的过程中,一旦发送RTSP的任何报文,就会出现服务器端主动reset,种种此类,如果基于ffmpeg的拉流确实是可以兼容大部分的摄像机IPC、NVR,但是遇到特殊种类的就比较难进行改造和兼容了;
没有绝对,根据需求,也许您就只需要接入某两款特定类型的摄像机呢,怎么适合现场需求怎么来;
2. 音视频转码(H.264 + AAC)
由于目前RTMP、HLS的协议标准,包括前端的支持上,还停留在H.264+AAC的组合上,所以,我们需要将各种视频格式:H.265、MJPEG、MPEG4,各种音频格式:G.711A/U、G.726,都统一转码成H.264和AAC,说到转码,那肯定是ffmpeg first;
目前市面上的大部分摄像机都是默认或者设定为输出H.264视频流,但音频流转码就肯定是需要兼容的,目前来说安防标准中大部分的音频格式都还是G.711和G.726居多,那就可以用faac、EasyAACEncoder(Based on faac)进行音频转码了!
3. RTMP推流
RTMP推流毋庸置疑,目前最流行的还是librtmp了,当然直接用ffmpeg也直接集成了rtmp推流的功能,而且在时间戳调优方面,帮助我们省了很多事情;
关于时间戳调优上,我们在开发EasyRTMP上花费了很多时间,由于各个IPC厂家出来的时间戳不一定是非常标准的(这里就要赞一下海康,批评一下雄迈了,请问雄迈的开发,你们搞出来的时间戳都是什么玩意儿?),所以就需要RTMP推流端对时间戳进行一次均匀化,不然就会出现HLS经常会快放、慢放、卡顿缓冲加载的现象,这一点上EasyRTMP参考的ffmpeg的-re命令的方案,对时间戳进行了优化,保证均匀播放;
4. RTMP流媒体服务器
这里说到的RTMP服务器有几个输出条件:
- rtmp
- hls
- http-flv(可选)
这种类型的开源流媒体服务器目前可以推荐的有国产的srs、著名的nginx-rtmp、当然还有我们开发的商业化的EasyDSS(EasyDSS是EasyDarwin团队开发的一款商用流媒体服务器,详情见:www.easydss.com),除了nginx-rtmp不能输出http-flv功能(当然也不会影响整体需求的实现),都能非常好地满足用户的需求;
5. 前端兼容取流播放
前端兼容当然就是一套非常闪亮而且先进的前端框架,能响应式地接受各种不同平台终端的请求,为PC web、手机 web、微信分配从rtmp流媒体服务器获取rtmp、hls、http-flv等直播流;
推荐EasyNVR用到的EasyUI框架:
推荐方案
说了这么多,当然要推荐推荐自己团队开发的EasyNVR了,以上的干货都是在开发EasyNVR的过程中积累的;
更多EasyNVR方案及版本下载:http://www.easydarwin.org/easynvr/
获取更多信息
Copyright © EasyDarwin.org 2012-2017

web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!的更多相关文章
- [转] web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!
需求 问题:有没有flash播放RTSP的播放器?H5能不能支持RTSP播放? 答案:没见过,以后估计也不会有: 问题:可以自己做浏览器插件播放RTSP吗? 答案:可以的,chrome做ppapi插件 ...
- Web下无插件播放rtsp视频流的方案及各家优秀内容资源整理
Web下无插件播放rtsp视频流的方案及各家优秀内容资源整理 方案一:服务器端用 websocket 接受 rtsp ,然后,推送至客户端 实现步骤: 方案二:使用 ffmpeg + nginx 把 ...
- 使用Gin+WebSocket在HTML中无插件播放RTSP
在后台的开发中遇到了对接显示摄像头视频流的需求.目前获取海康及大华等主流的摄像头的视频流使用的基本都是RTSP协议.不过HTML页面并不能直接播放RTSP协议的视频流,查询了一番各种网页播放RTSP的 ...
- 浏览器无插件播放rtsp流解决方案
1. 安装 FFmpeg 参考 CentOS下安装FFmpeg,特别详细. 我遇到的错误和解决办法: 缺少lame ffmpeg+libmp3lame库源码安装教程(CentOS) make ffmp ...
- EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程
EasyNVR 项目中, 我们需要在网页/微信中嵌入 HLS 播放器, 实现直播效果. 开发过程中, 我们调研了很多HLS播放器, 包括 百度cyberplayer, ckplayer, flowpl ...
- EasyNVR是怎么做到Web浏览器播放RTSP摄像机直播视频延时控制在一秒内的
背景说明 由于互联网的飞速发展,传统安防摄像头的视频监控直播与互联网直播相结合也是大势所趋.传统安防的直播大多在一个局域网内,在播放的客户端上也是有所限制,一般都是都需要OCX Web插件进行直播.对 ...
- 基于EasyDarwin框架实现EasyNVR H5无插件直播流媒体服务器方案
在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服务器方案架 ...
- 基于EasyDarwin开源流媒体服务器框架实现EasyNVR H5无插件直播流媒体服务器方案
背景分析 在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服 ...
- NVR硬件录像机web无插件播放方案功能实现之相关接口注意事项说明
该篇博文主要用来说明EasyNVR硬件录像回放版本的相关接口说明和调用的demo: 方便用户的二次开发和集成. 软件根目录会包含接口文档的,因此,本文主要是对一些特定接口的说明和接口实现功能的讲解以及 ...
随机推荐
- RecyclerView的Item和Item内的控件点击处理
需求场景:RecyclerView的Item需要点击,或者Item中的某个控件需要点击,或者两者同时需要点击处理. 一.adapter代码如下: package com.ldw.adapter; im ...
- (7)JavaScript-BOM(浏览器对象模 型)
window 对象 全局作用域 在浏览器中, window 对象有双重角色,它既是通过 JavaScript 访问浏览器窗口的一个接口,又是 ECMAScript 规定的 Global 对象. 所有在 ...
- Wordpress笔记:背景音乐
想要在blog首页加上自动播放的背景音乐,能找到的插件与方法基本上都是讲在文章里添加的.侧边栏里添加文本的方法也总有美观等等这样那样的问题,折腾了几种之后终于搞定了.用的是Audio player插件 ...
- codevs——3372 选学霸(背包)
题目等级 : 大师 Master 时间限制: 1 s 空间限制: 128000 KB 题解 题目描述 Description 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实 ...
- ie8 不能加载dll的问题解决
请问是在打开IE的时候提示无法加载DLL文件吗? 请尝试重置IE: 1. 关闭所有Internet Explorer窗口. 2. 单击开始,点击运行,输入inetcpl.cpl,按回车. 3. 点击高 ...
- struts_hibernate登陆范例
开发工具:MyEclipse 6.0 ,Tomcat 5.5 ,JDK 1.5 ,MySQL 5.0 :开发准备:下载Struts 2.0和Hibernate 3.2,大家可Struts和Hiber ...
- Importance sampling
用蒙特卡洛求解积分时 (Monte Carlo 随机采样对目标积分函数做近似) importance sampling func p(x) p(x)值大的地方,Monte Carlo多采几次 值小的地 ...
- Android 网络编程 记录
简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...
- pymongo的基本使用
#!/usr/bin/env python # -*- coding:utf-8 -*- """ MongoDB存储 在这里我们来看一下Python3下MongoDB的存 ...
- UNP学习笔记(第十一章 名字与地址转换)
域名系统 域名系统(Domain Name System,DNS)主要用于主机名字与IP地址之间的映射. 主机名既可以是一个简单得名字,如solaris,也可以是一个全限定域名,如solaris.un ...