HTML5中的websocket图片直播
HTML5中的websocket实现直播
1、 videojs-contrib-hls 直播功能
github:https://github.com/videojs/videojs-contrib-hls
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
android、IOS下需m3u8格式直播地址
webkit等PC浏览器下需videojs-flash支持播放trmp
2.
https://blog.csdn.net/qq_39364032/article/details/79744309
做视频直播这一块,前期研究了很多方案,包括websocket,因为各种原因最后没有采取这个方案,但还是想记录一下学习的心得。
WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。
当你获取 Web Socket 连接后,你可以通过send()方法来向服务器发送数据,并通过onmessage事件来接收服务器返回的数据。
做的过程中,主要的思维是:在录像页面利用setTimeout()每隔固定的时间通过canvas将视频转化为一帧一帧的图像,然后用websocket的socket.send()将图片数据发送给服务器。在直播页面就是先创建一个<img>的结构,通过websocket的socket.onmessage()获取到图像数据,并展示<img>标签上,形成直播。
附上代码
录像页面HTML结构
<video autoplay id="sourcevid" style="width:1600;height:900px"></video>
<canvas id="output" style="display:none"></canvas>
录像页面js
<script type="text/javascript" charset="utf-8">
//创建一个+实例
var socket = new WebSocket("ws://"+document.domain+":8080");
var back = document.getElementById('output');
//返回一个用于在画布上绘图的环境。
var backcontext = back.getContext('2d');
var video = document.getElementsByTagName('video')[0];
var success = function(stream){
//获取视屏流,转换为url
video.src = window.URL.createObjectURL(stream);
}
//打开socket
socket.onopen = function(){
draw();
console.log("open success")
}
// 将视频帧绘制到Canvas对象上,Canvas每100ms切换帧,形成肉眼视频效果
var draw = function(){
try{
backcontext.drawImage(video,0,0, back.width, back.height);
}catch(e){
if (e.name == "NS_ERROR_NOT_AVAILABLE") {
return setTimeout(draw, 100);
} else {
throw e;
}
}
if(video.src){
// Canvas的内容转化成PNG data URI并发送到服务器,0.5为和压缩系数
socket.send(back.toDataURL("image/jpeg", 0.5));
}
setTimeout(draw, 100);
}
//调用设备的摄像头,并将资源放入video标签
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
navigator.getUserMedia({video:true, audio:false}, success, console.log);
</script>
直播页面HTML结构:
<img id="receiver" style="width:1600px;height:900px"/>
直播页面JS
<script type="text/javascript" charset="utf-8">
//创建一个socket实例
var receiver_socket = new WebSocket("ws://"+document.domain+":8008");
alert("ws://"+document.domain+":8008")
var image = document.getElementById('receiver');
// 监听消息
receiver_socket.onmessage = function(data)
{
image.src=data.data;
}
</script>
HTML5中的websocket图片直播相关推荐
- html直播源码,HTML5中的websocket实现直播功能
做视频直播这一块,前期研究了很多方案,包括websocket,因为各种原因最后没有采取这个方案,但还是想记录一下学习的心得. WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双 ...
- HTML5中的websocket实现直播
https://blog.csdn.net/qq_39364032/article/details/79744309
- HTML5中的WebSocket
背景 在传统方式下,很多网站为了实现即时通讯,所用的技术都是轮询.轮询是在特定的的时间间隔(如每1秒),由浏览器对伺服器发出HTTP request,然后由伺服器返回最新的数据给客户端的浏览器.这种传 ...
- HTML5中的webSocket、ajax、http
本文原链接:https://cloud.tencent.com/developer/article/1115496 https://cloud.tencent.com/developer/articl ...
- dw html5中怎么设置图片自动切换,DW制作九宫格全屏亮灯轮播图片且自动切换图片教程...
本文介绍的是利用DW制作九宫格全屏亮灯轮播图片并且可以自动切换图片,而且点击图片时还会亮灯,推荐过来,大家一起来学习吧! 软件名称:Adobe Dreamweaver CS3 官方中文安装版软件大小: ...
- html5中如何让图片向下移动,如何调整HTML5的图像移动
我事先不搞清楚如何格式化这个正确如何调整HTML5的图像移动 我转换包含按钮和非常简单的动作脚本为HTML5文件的Flash SWF道歉.我上传的.html和使用iframe代码我在网上找到把它在我的 ...
- html5中如何放图片,css怎么放图片?
随着互联网的发展,网速不断提升,我们现在的网页也变的更加丰富起来,除了能够传输文字外,我们还可以传输图片.我们该如何使用css在网页中放图片?下面我们俩看一下使用css在网页中放图片的方法. css可 ...
- html5中的img图片属性
<img src=" " alt=" "> 解释:src是图片路径, alt是用来设置图片发生错误时显示的替换文字.eg: title是用来 ...
- html5中怎么把图片放大,HTML5中,如何为图片制作放大镜效果?
在文档中显示缩略图, 通过getComputedStyle来获取缩略图大小, 并映射成真实大小的图片尺寸; 给缩略图添加mouseon事件, 当鼠标处在缩略图上时显示放大镜元素; 反之则移除 给缩略图 ...
最新文章
- swoole mysql 协程_Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比
- Linux Kernel TCP/IP Stack — Socket Layer
- CSS---网络编程
- 数据库查询语言SQL概念
- 汉字为什么能流传至今_汉字能流传至今,比毛不易还不易,它的同龄字统统都死掉了...
- 建筑与计算机技术,建筑设计中常用的计算机技术与注意点
- arch linux 安装xfce_华为荣耀Magicbook安装Manjaro系统指北
- Java操作某方法时报错:java.lang.NoSuchMethodError
- 江西6地列入国家智慧城市试点 智慧城市啥模样专家来描绘
- 使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=属性,不能使用selected...
- node.js安装和vue全局安装教程
- 九宫格日记-2013年02月23日
- 秒杀功能设计思想 php,seckill-system-php
- Python爬取堆糖网图片的代码
- obj[key].obj['key'],obj.key的区别
- 飞行CSS3导航菜单
- 【Bootstrap】<前端框架>Bootstrap布局容器栅格网格系统
- 一日一技:用Python绘画有多好玩
- 一个故事,一段代码告诉你如何使用不同语言(GolangC#)提供相同的能力基于Consul做服务注册与发现
- 利用pdf2image,将pdf文件转换成图片
热门文章
- NTP时间同步服务器报错:no server suitable for synchronization found
- 数据包头分析---网络字节序与主机字节序
- post postman 传值_postman参数传递
- XSLT - 利用template实现for循环
- CMake编译Widget UI Qt程序
- android studio annotations,AndroidAnnotations在Android Studio中的配置
- 软件测试沟通技巧,你到底应该如何沟通:沟通的技巧
- 我眼中未来的计算机作文600字,我的电脑作文600字
- quo,vadis_Quo Vadis JUnit
- 字节跳动_掌握Java字节码