本文转自: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多种码流,再通过前端的兼容适配,就能完美地达到想要的方案,总结来说,需要通过几个步骤:

  1. RTSP拉流;
  2. 音视频转码(H.264 + AAC);
  3. RTMP推流;
  4. RTMP流媒体服务器;
  5. 前端兼容取流播放;

实现方法

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/

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!的更多相关文章

  1. [转] web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!

    需求 问题:有没有flash播放RTSP的播放器?H5能不能支持RTSP播放? 答案:没见过,以后估计也不会有: 问题:可以自己做浏览器插件播放RTSP吗? 答案:可以的,chrome做ppapi插件 ...

  2. Web下无插件播放rtsp视频流的方案及各家优秀内容资源整理

    Web下无插件播放rtsp视频流的方案及各家优秀内容资源整理 方案一:服务器端用 websocket 接受 rtsp ,然后,推送至客户端 实现步骤: 方案二:使用 ffmpeg + nginx 把 ...

  3. 使用Gin+WebSocket在HTML中无插件播放RTSP

    在后台的开发中遇到了对接显示摄像头视频流的需求.目前获取海康及大华等主流的摄像头的视频流使用的基本都是RTSP协议.不过HTML页面并不能直接播放RTSP协议的视频流,查询了一番各种网页播放RTSP的 ...

  4. 浏览器无插件播放rtsp流解决方案

    1. 安装 FFmpeg 参考 CentOS下安装FFmpeg,特别详细. 我遇到的错误和解决办法: 缺少lame ffmpeg+libmp3lame库源码安装教程(CentOS) make ffmp ...

  5. EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程

    EasyNVR 项目中, 我们需要在网页/微信中嵌入 HLS 播放器, 实现直播效果. 开发过程中, 我们调研了很多HLS播放器, 包括 百度cyberplayer, ckplayer, flowpl ...

  6. EasyNVR是怎么做到Web浏览器播放RTSP摄像机直播视频延时控制在一秒内的

    背景说明 由于互联网的飞速发展,传统安防摄像头的视频监控直播与互联网直播相结合也是大势所趋.传统安防的直播大多在一个局域网内,在播放的客户端上也是有所限制,一般都是都需要OCX Web插件进行直播.对 ...

  7. 基于EasyDarwin框架实现EasyNVR H5无插件直播流媒体服务器方案

    在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服务器方案架 ...

  8. 基于EasyDarwin开源流媒体服务器框架实现EasyNVR H5无插件直播流媒体服务器方案

    背景分析 在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服 ...

  9. NVR硬件录像机web无插件播放方案功能实现之相关接口注意事项说明

    该篇博文主要用来说明EasyNVR硬件录像回放版本的相关接口说明和调用的demo: 方便用户的二次开发和集成. 软件根目录会包含接口文档的,因此,本文主要是对一些特定接口的说明和接口实现功能的讲解以及 ...

随机推荐

  1. RecyclerView的Item和Item内的控件点击处理

    需求场景:RecyclerView的Item需要点击,或者Item中的某个控件需要点击,或者两者同时需要点击处理. 一.adapter代码如下: package com.ldw.adapter; im ...

  2. (7)JavaScript-BOM(浏览器对象模 型)

    window 对象 全局作用域 在浏览器中, window 对象有双重角色,它既是通过 JavaScript 访问浏览器窗口的一个接口,又是 ECMAScript 规定的 Global 对象. 所有在 ...

  3. Wordpress笔记:背景音乐

    想要在blog首页加上自动播放的背景音乐,能找到的插件与方法基本上都是讲在文章里添加的.侧边栏里添加文本的方法也总有美观等等这样那样的问题,折腾了几种之后终于搞定了.用的是Audio player插件 ...

  4. codevs——3372 选学霸(背包)

    题目等级 : 大师 Master  时间限制: 1 s  空间限制: 128000 KB 题解       题目描述 Description 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实 ...

  5. ie8 不能加载dll的问题解决

    请问是在打开IE的时候提示无法加载DLL文件吗? 请尝试重置IE: 1. 关闭所有Internet Explorer窗口. 2. 单击开始,点击运行,输入inetcpl.cpl,按回车. 3. 点击高 ...

  6. struts_hibernate登陆范例

    开发工具:MyEclipse 6.0 ,Tomcat 5.5 ,JDK 1.5  ,MySQL 5.0 :开发准备:下载Struts 2.0和Hibernate 3.2,大家可Struts和Hiber ...

  7. Importance sampling

    用蒙特卡洛求解积分时 (Monte Carlo 随机采样对目标积分函数做近似) importance sampling func p(x) p(x)值大的地方,Monte Carlo多采几次 值小的地 ...

  8. Android 网络编程 记录

    简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...

  9. pymongo的基本使用

    #!/usr/bin/env python # -*- coding:utf-8 -*- """ MongoDB存储 在这里我们来看一下Python3下MongoDB的存 ...

  10. UNP学习笔记(第十一章 名字与地址转换)

    域名系统 域名系统(Domain Name System,DNS)主要用于主机名字与IP地址之间的映射. 主机名既可以是一个简单得名字,如solaris,也可以是一个全限定域名,如solaris.un ...