php获取h5视频直链,一种H5播放实时视频的方法与系统与流程

2cf3f9c0993473cfb157234b12879ee1.gif

本发明涉及播放实时视频,尤其涉及一种h5播放实时视频的方法与系统。

背景技术:

h5是指第5代html,也指用h5语言制作的一切数字产品。所谓html是“超文本标记语言”的英文缩写。“超文本”是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。而“标记”指的是这些超文本必须由包含属性的开头与结尾标志来标记。浏览器通过解码html,就可以把网页内容显示出来。基于这种h5解码技术将接收到的视频信息,就可以通过网页的形式播放出来。

目前,h5播放视频,大部分都不支持websocket方式,都是通过m3u8格式进行播放,延迟将近10秒,无法应用于实时场景。

技术实现要素:

为了解决现有技术中的问题,本发明提供了一种h5播放实时视频的方法与系统。

本发明提供了一种h5播放实时视频的方法,包括以下步骤:

s1、在推流端,将推流格式调整为h264baseline模式;

s2、将视频流转发到rtmp流媒体服务器;

s3、用node.js服务器启动脚本对h264baseline的视频流进行解码,并重新组装成适合websocket模式的视频流;

s4、h5客户端启动连接到node.js服务器的监听端口,并告知node.js服务需要哪一路视频流;

s5、node.js对当前视频流进行实时转发;

s6、当流媒体有中断的时候,根据rtmp流媒体服务器相关事件进行停止或者重启解码并转发;

s7、h5客户端利用转发的视频流,用canvas实时绘制视频流。

作为本发明的进一步改进,在步骤s1中,在推流端,将推流格式由h264high模式,改变成h264baseline模式。

作为本发明的进一步改进,node.js服务器的实时解码过程如下:

1)启动流媒体服务器;

2)推流端将h264high模式改为h264baseline模式,并推流到流媒体服务器;

3)node.js服务器对流媒体服务器流事件进行监控;

4)进行流事件处理,如果流断开,则停止转码,如果新流产生,则启动脚本并实时解码组装。

作为本发明的进一步改进,h5客户端的实时播放流程如下:

1)h5客户端通过websocket连接到node.js服务器;

2)h5客户端指定需要哪一路视频流;

3)node.js服务器实时转发视频流;

4)h5客户端用canvas实时绘制视频流。

本发明还提供了一种h5播放实时视频的系统,包括可读存储介质,所述可读存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现如上述中任一项所述的方法。

本发明的有益效果是:实现了h5播放实时视频。

附图说明

图1是本发明一种h5播放实时视频的方法的node.js服务器的实时解码流程图。

图2是本发明一种h5播放实时视频的方法的node.js服务器的h5客户端的实时播放流程图。

具体实施方式

下面结合附图说明及具体实施方式对本发明作进一步说明。

一种h5播放实时视频的方法,包括以下步骤:

1.在推流端,将原来的推流格式h264high模式,改变成h264baseline模式。

2.将视频流转发到rtmp流媒体服务器。

3.用node.js启动脚本对h264baseline的视频流进行解码,并重新组装成适合websocket模式的视频流。

4.h5客户端启动连接到node.js的监听端口,并告知node.js服务需要哪一路视频流。

5.node.js对当前视频流进行实时转发。

6.当流媒体有中断的时候,根据rtmp流媒体服务器相关事件进行停止或者重启解码并转发。

7.h5客户端利用转发的视频流,用canvas实时绘制视频流。

本发明提供的一种h5播放实时视频的方法,改变推流的模式,能兼容app和h5;需要实现rtmp视频流解码成websocket的视频流;要能监控视频流的状态,实现程序自动停止和重启视频流的解码和转发。

如图1所示,node.js服务器的实时解码过程如下:

1)启动流媒体服务器;

2)推流端将h264high模式改为h264baseline模式,并推流到流媒体服务器;

3)node.js服务器对流媒体服务器流事件进行监控;

4)进行流事件处理,如果流断开,则停止转码,如果新流产生,则启动脚本并实时解码组装。

node.js是一个基于chromev8引擎的javascript运行环境。

如图2所示,h5客户端的实时播放流程如下:

5)h5客户端通过websocket连接到node.js服务器;

1)h5客户端指定需要哪一路视频流;

2)node.js服务器实时转发视频流;

3)h5客户端用canvas实时绘制视频流。

h5播放实时视频应用到娃娃部落抓娃娃的实例:

1.在推流端,将推流参数调整为h264的baseline模式。

2.node.js调用相关的脚本,对rtmp流媒体服务器事件进行监控,同时对客户端的连接进行监听。

3.当有新的baseline模式的流上来时,启动一个脚本进行实时转码。

4.当有新的用户通过h5来观看或者游戏的时候,通过canvas实时绘制视频流。

一种h5播放实时视频的系统,包括可读存储介质,所述可读存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现如上述中任一项所述的方法。

本发明提供的一种h5播放实时视频的方法与系统,可以在h5或者微信网页里面直接打开视频,并且能实时操作,做到基本无延时,延时在200ms以内。

本发明提供的一种h5播放实时视频的方法与系统,具有以下效果:

1、以前需要通过app才能体验的方式,扩展到h5也能支持。

2、对业务的拉新产生了比较好的效果。

3、在480*640的视频流下解码并组装,一个8核16g内存的服务器,可以支持同时128路转码分发。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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

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

相关文章

移动端中的陀螺仪

横竖屏 window下的orientation属性来表示移动端的横竖屏状态,chrome模拟器不支持该属性,只能在真机上测试 window.orientation 按照上右下左的顺序,该属性的结果分别是0、90、180、-90 [注意]手机头朝下的切换没有实现 window下的orientation…

php 收缩栏,HTML5每日一练之details展开收缩标签的应用

HTML5每日一练之details展开收缩标签的应用details标签的出现,为我们带来了更好的用户体验,不必为这种收缩展开的效果再编写JS来实现。注:目前仅Chrome支持此标签。details有一个新增加的子标签——summary,当鼠标点击summary标签…

博客阅读和思考

1.关于当初 选择说来惭愧,当初选择专业之时,我并没有认真审视过所有专业,没有自己感兴趣的专业方向.是父母帮我选择了软件工程这个方向,他们说IT行业发展前景好,以后不愁工作.我想想,也是这样的.于是稀里糊…

oracle行列互换sql,解决Oracle行列转换问题的一个方法

不好意思,编译错误,可能是版本的问题其实,实现的方法很简单,请参考精华帖子下面是源文件 ,我是的数据库版本是9.2.0.1,OS为NT[PHP]---Author: Accelerator---Date : 2004-11-25create or replace type lis…

zufeoj 分数线划定

分数线划定 时间限制: 1 Sec 内存限制: 128 MB提交: 13 解决: 7[提交][状态][讨论版]题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试…

php 主进程子进程,PHP中的子进程的任何等价物?

通过双向通信,您可以访问stdin,stdout和stderr的最接近的等价物是proc_open().以下是文档中的示例:$descriptorspec array(0 > array("pipe", "r"), // stdin is a pipe that the child will read from1 > array("pipe", &quo…

oracle只读事物,oracle的只读事务

一致性读是oracle区别于其他数据库的重要特点之一,但一般来说,这个一致性读是sql级别的,只针对单个sql有效。由于业务逻辑需要,我们可能需要在一个事务中的多个sql也能实现读一致性,也就是说,数据源在事务开…

获得网页中元素的位置

网页大小: clientWidth和clientHeight。 最快速的方法:getBoundingClientRect() 获得top, right, bottom, left,是获得元素距离viewport的左上角。 获得元素的相对位置:不断向父元素获得offsetHeight和offsetWidth。 获得元素的绝…

实验一 软件工程准备

1、实验目的与要求 (1) 学习通过博客园软件开发者学习社区的协作与支持完成软件工程课程学习的技巧和经验。 (2) 掌握Github操作; 2、实验内容和步骤 任务1:在以下网址提交课程调查问卷:https:/…

matlab气相分解反应动力学,第十二章 化学动力学.ppt

快反应 慢反应 速控法 稳态法 (1) 一级反应 (2) 二级反应 高压时 低压时 RRKM理论 12.7 光化学反应 * 物理化学(下) PHYSICAL CHEMISTRY (11) 碰撞理论 单分子反应理论 过渡态理论 光化学反应 催化反应动力学 本章主要内容: 12 化学动力学基础(二) 反应速率理论 碰撞…

深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

http://blog.csdn.net/u014595019/article/details/52989301转载于:https://www.cnblogs.com/mdumpling/p/8527799.html

基础题

1,别名,内部,外部,hash优先级? 2,screen协助 1.一台screen -S 协助名称 2.另外一台screen -ls 列出目前开的协助会话(session),找到上面协助名称对应的session号。 3. sc…

oracle查询字段精度,【Oracle】查询字段的长度、类型、精度、注释等信息

在mysql中alter命令可以修改字段类型,长度,名称或一些其它的参数,下面我来给大家介绍alter函数修改字段长度与类型的两个命令,希望文章来给各位带来帮助. mysql 修改字段长度 alter table news modify column title varchar(130); alter table 表名 modify column 字段名 …

linux改文件后run,linux下.run文件如何安装与卸载

w 表示可写入,其中 u 表示该档案的拥有者,有个 uninstall 文件, r 表示可读取,利用 chmod 可以藉以控制档案如何被他人所调用。执行./uninstall就ok了 下面是其他网友的补充: 比如安装QT编程软件 安装方法如下 命令第一…

leetcode链表题

1. sort_list Sort a linked list in O(n log n) time using constant space complexity. 分析:时间复杂度是nlogn,所以可以考虑归并排序。取中点,对左边和右边分别递归排序,最后合并。 知识点:快慢指针,用来取链表中点…

linux进程管理之mm_struct,【转】Linux进程管理之SMP负载平衡(续二)

继续来分析balance_tasks()函数,结合代码中的注释,理解这段代码应该很容易,在这里主要分析它的两个重要的子函数,即can_migrate_task()和pull_task().先来看can_migrate_task().该函数用来判断当前进程是否能够迁移到目标cpu上,代码如下:staticint can_migrate_task(struct tas…

分治法求最大最小

分治法的基本思想&#xff1a;是将一个规模为n的原问题分解为k个规模较小的子问题&#xff0c;这些子问题互相独立且与原问题相同。递归地解这些子问题&#xff0c;然后将子问题的解合并为原问题的解。 1 #include<stdio.h>2 /* 分治法计算最大值和最小值的算法程序&…

linux安装程序乱码,linux远程桌面乱码解决及引起的相关问题、字库安装

一、解决linux中文乱码问题通过xmanager远程访问linux(我这里使用redhat as5)&#xff0c;原先本机可以看到的中文出现乱码(ssh终端访问时也是乱码)。如何解决这一问题&#xff1f;其实&#xff0c;很简单只要设置系统字符集就行。具体如下&#xff1a;1、修改/etc/sysconfig/i…

第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进

第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进 //仅用flash上的根文件系统启动后&#xff0c;手工MOUNT NFSmount -t nfs -o nolock,vers2 192.168.31.202:/work/nfs_root /mnt //在虚拟机中操作/work/nfs_root/tmp$ sudo chown book:book fs_mini_mdev -R //修改为可…

linux查看目录下文件个球,球服务翻译……只找到以前版本的。新版的服务名称改了……...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼还是优化的问题……看得懂地我就关了。比如蓝牙什么的……5985ms fedora-storage-init.service4451ms colord-sane.service3578ms udev-settle.service1545ms NetworkManager.service1492ms boot.mount1443ms systemd-vconsole-set…