使用Workerman做一个简单的录像直播功能

1、准备好项目

之前做过一个简单的聊天室,我是根据之前弄的聊天室改过来的。
参考:https://blog.csdn.net/qq_38231822/article/details/112800457

2、大致思路

	这些小东西都是自己没事捅咕玩的,随便写一写。概括来说的话就是将录像定时的转成图片的数据流发送到workerman,再通过workerman发送给客户端

3、来吧开始上东西

这个是workerman的处理的代码
<?php
use Workerman\Worker;
require_once "Workerman/Autoloader.php";
//简易聊天室
$global_uids = 0;
//一共有多少用户//用户连接事件
function conn($connection)
{global $worker,$global_uids;$connection->uid = ++$global_uids;
}//接收用户发送消息事件  然后发送给所有用户
function msg($connection,$data)
{global $worker;foreach ($worker->connections as $conn) {$conn->send("用户{$connection->uid}说:{$data}");}
}//用户退出事件
function close($connection)
{global $worker;foreach ($worker->connections as $conn) {$conn->send("用户{$connection->uid}离开");}
}	$worker = new Worker('websocket://0.0.0.0:2222');
$worker->count = 1;
$worker->onConnect = 'conn';
$worker->onMessage = 'msg';
$worker->onClose   = 'close';Worker::runAll();

这个是之前的1.html,就是读取视频的页面

<!DOCTYPE html>
<html>
<head><title></title><script type="text/javascript" src="jquery.3.5.0.min.js"></script><style type="text/css">*{padding:20px;}#box{width: 500px;height: auto;border:1px lightgray solid;}</style>
</head>
<body>
<div id="box"><img src="img/logo.jpg" id="img" style="width: 300px;">
</div>
<input type="text" placeholder="输入要发送的内容" id="message">
<input type="button" name="" value="发送" id="sub">
<script type="text/javascript">
ws = new WebSocket("ws://127.0.0.1:2222");
ws.onopen = function() {$("#box").append("连接成功<br />");};
ws.onmessage = function(e) {if (e.data.length > 1000) {src = e.data.substring(5,e.data.length);try{imageUrl = src;}catch(error){imageUrl = window.URL.createObjectURL(src); }$("#img").attr("src",imageUrl);} else {$("#box").append(e.data + "<br />");}
};
$("#sub").click(function(){let content = $("#message").val();ws.send(content);
});
</script>
</body>
</html>

又加了个页面,是放视频的。

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>capture screen</title>
</head>
<body>
<div id="box"></div>
<video id="video" controls="controls" style="width: 300px;"><source src="vedio/1.mp4" type="video/mp4">
</video>
<div id="output"></div>
<script type="text/javascript" src="jquery.3.5.0.min.js"></script>
<script type="text/javascript">(function(){ws = new WebSocket("ws://127.0.0.1:2222");ws.onopen = function() {$("#box").append("连接成功<br />");};ws.onmessage = function(e) {if (e.data.length > 1000) {return;}$("#box").append(e.data + "<br />");};var tmp_canvas;var video, output;var scale = 0.3;var initialize = function() {output = document.getElementById("output");video = document.getElementById("video");video.addEventListener('click',captureImage);};var captureImage = function() {var canvas = document.createElement("canvas");canvas.width = video.videoWidth * scale;canvas.height = video.videoHeight * scale;canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);// var img = document.createElement("img");// img.src = canvas.toDataURL("image/jpeg");tmp_canvas = canvas;// output.appendChild(tmp_canvas);};initialize();setInterval(function(){$("#video").trigger("click");ws.send(tmp_canvas.toDataURL("image/jpg", 0.8));},16);})();
</script>
</body>
</html>

在这里插入图片描述

这张图片就是最后的目录的结构。改一下视频的路径啊,图片的路径,基本就可以了。大致的操作方法和之前的一样,dos窗口运行chat.php的文件,然后先打开test.html,再打开其他的页面,大致就可以啦。Linux上的话可以通过监听不同的端口来实现直播和客户的分开,我是windows上随便写写玩的,windows上不能直接监听两个。所以写的随意了些。
在这里插入图片描述
这个就是我最后的效果啦。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

livekit 简单上手教程

什么是livekit&#xff1f; livekit是一个开源的webrtc项目&#xff0c;基于pion实现了SFU架构的go程序。 它主要有以下几个特性&#xff1a; 可以水平扩展的sfu架构。有完整的sdk程序接口供开发人员使用。基于JWT进行身份验证&#xff0c;可与大部分系统进行权限集成。内置Tur…

【Supervisor】Supervisor使用教程

在项目中&#xff0c;经常有脚本需要常驻运行的需求。以PHP脚本为例&#xff0c;最简单的方式是&#xff1a; Copy $ nohup php cli.php & 这样能保证当前终端被关闭或者按CRTLC后&#xff0c;脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用Py…

learnOpenGL_07_摄像机

1、 摄像机/观察空间 以摄像机的视角作为场景原点时场景中所有的顶点坐标&#xff1a;观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机&#xff0c;需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。…

AWS助理架构师认证培训实操练习 | How to SSH using Windows

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

supervisord初体验

Supervisor是一个客户端/服务器系统&#xff0c;允许其用户监视和控制类似UNIX的操作系统上的许多进程。 安装 1.supervisord是python的一个库可以直接用过pip来进行安装 pip install supervisor2.如果没有pip可以在PyPi[https://pypi.org/project/supervisor/]上下载supervi…

AWS助理架构师认证培训实操练习 | IAM Policies Hands on

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS助理架构师认证培训实操练习 | IAM MFA Hands On

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS SageMaker Studio Lab免费的机器福利利用起来~

国内无法访问Google Colab&#xff0c;所以有时候跑Python notebook比较麻烦&#xff0c;得倒腾到本地&#xff0c;如果自己的机器&#xff08;比如笔记本&#xff09;性能不行的话跑起来也很痛苦 现在有了免费的羊毛&#xff0c;AWS SageMaker Studio Lab&#xff0c;国内可用…

AWS助理架构师认证培训实操练习 | IAM Roles Hands On

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

【笔记】MySQL行转列函数

GROUP_CONCAT()函数 创建表person_info&#xff0c;并插入数据 CREATE TABLE person_info (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) DEFAULT NULL,family varchar(100) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8;…

谷粒商城环境搭建二:开发环境统一

开发环境配置统一 Maven配置 查看maven信息 修改配置文件&#xff1a;apache-maven-3.3.9\conf\settings.xml# 配置阿里云镜像 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name&…

htc hd2连上wifi却显示无法连接服务器,HTC HD2线刷官方ROM疑难问题解答

HTC HD2线刷官方ROM更新实用程序 (RUU)需要注意哪些问题呢&#xff1f;安致小编在这里为大家整理这篇 《HTC HD2线刷官方ROM疑难问题解答》&#xff0c;希望对大家线刷官方RUU有所帮助。 开始准备: 运行 ROM 更新实用程序 (RUU) 前&#xff0c;请确认下列事项&#xff1a; 1.An…

提取官方原生(RUU/.exe)ROM刷机文件

官方ROM提取刷机文件结构主要为&#xff1a; android-info.txt&#xff0c;boot.img&#xff0c;hboot_*.nb0&#xff0c;radio.img&#xff0c;rcdata.img&#xff0c;recovery.img&#xff0c;splash1.nb0&#xff0c;system.img&#xff0c;userdata.img 官方(.exe)ROM提取过…

HTC One V卡刷RUU准备工作 图文教程详解

为什么80%的码农都做不了架构师&#xff1f;>>> HTC One V卡刷RUU准备工作 图文教程详解 相对于线刷&#xff0c;HTC One V卡刷RUU更为方便快捷&#xff0c;不会和普通RUU那样这么容易出错&#xff0c;不必害怕刷机中发生断电等意外事故&#xff0c;也可以重启或者…

Elasticsearch-8.x.x安装启动后测试报错[WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU]

浏览器输入 IP:端口号后报错。&#xff08;*默认端口号9200&#xff0c;自定义端口号在elasticsearch.yml文件里http.port: 自定义端口&#xff09; [WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU] received plaintext http traffic on an https c…

HTC ONE X刷ruu的详细刷机教程

一&#xff1a;准备工作&#xff1a; 1&#xff1a;手机必须能用usb数据线电脑&#xff0c;因为是线刷&#xff0c;所以必须要有数据线 2&#xff1a;检查一下电脑&#xff0c;确保电脑上已经安装htc one m7的usb驱动了 2&#xff1a;下载ruu刷机包&#xff0c;下载适合一款…

测试基础|一文了解,这5种不同类别的软件测试工具都有啥用

介绍&#xff1a;对于任何希望确保其数字产品的质量和性能的企业来说&#xff0c;软件测试工具都是宝贵的资产。从桌面应用程序到Web平台&#xff0c;软件测试工具提供了一整套功能&#xff0c;可帮助开发人员在潜在问题成为代价高昂的问题之前识别并解决它们。彻底的测试变得至…

【机器人学】3-RUU-delta并联机器人正运动学、逆运动学和微分运动学

文章目录 串联和并联机器人对比delta机器人逆运动学正运动学微分运动学工作空间 串联和并联机器人对比 串联机器人和并联机器人各有优缺点。 串联机器人 优点 工作空间大&#xff1b;可实现的姿态多&#xff1b; 缺点 能量效率低&#xff0c;加速性差&#xff1b;末端负载小…

htc e9刷android6,HTC E9+刷机教程_HTC ONE E9+刷zip格式的ruu包的方法

说了有关HTC ONE E9的官方ruu包了&#xff0c;说的是卡刷形式了&#xff0c;那就是来说说咱们的这个卡刷形式的rom包怎么刷入手机吧&#xff0c;这个也不复杂&#xff0c;也不需要借助于第三方的刷机软件就可以操作了&#xff0c;是利用手机自带的升级系统来进行升级的&#xf…

htc x920e刷android7.0,HTC X920E (Butterfly) 刷回官方RUU固件教程

其实htc手机的线刷刷机是最容易的了&#xff0c;因为htc的官方包就是exe格式的&#xff0c;直接可以下载下来运行刷入就可以了&#xff0c;下面来说说HTC X920E/Droid DNA/Butterfly的具体的刷ruu的教程吧&#xff0c;这个教程也可以用来救砖用&#xff0c;如果你的手机刷机失败…