$serv=new swoole_websocket_server("0.0.0.0",9501);
$client=array();
$serv->on("open",function($serv,$req)use($client){
//echo 'connect'.$req->fd;
$client[]=$req;
//var_dump($client);
$serv->push($req->fd,'aa');
});

$serv->on("message",function($serv,$frame)use ($client){
/*var_dump($frame->data);
foreach($client as $key =>$val){
$serv->push($val->fd,'aa');
}*/
$client=$serv->connection_list();
var_dump($client);
foreach($client as $key =>$val){
if($val!=$frame->fd){
$serv->push($val,$frame->data);
}
}

});

$serv->on("close",function($serv,$fd){
echo 'close';
});

$serv->start();

<!doctype html>
<html>
<head>
<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>404</title>
<style>
body{
background-color:#444;
font-size:14px;
}
h3{
font-size:60px;
color:#eee;
text-align:center;
padding-top:30px;
font-weight:normal;
}
</style>
</head>

<body>
<video src="test.mp4" width="400" id="video" autoplay="true" controls="true"></video>
<canvas width="400" id="canvas" height="400" style="display:none"></canvas>
<canvas width="400" id="canvas2" height="400" ></canvas>
<script>
var video=document.getElementById('video');
var canvas=document.getElementById('canvas');
var canvas2=document.getElementById('canvas2');
var context=canvas.getContext('2d');
var context2=canvas2.getContext('2d');
function draw(){
context.drawImage(video,0,0,400,400);
ws.send(canvas.toDataURL('image/jpeg',0.8));
setTimeout(draw,800);
}

//客户端跟服务端通讯
if (window.MozWebSocket)
{
ws = new MozWebSocket("ws://182.61.42.187:9501");
} else
{
ws = new WebSocket("ws://182.61.42.187:9501");
}

ws.onopen=function(event){
alert('连接成功');
ws.binaryType = 'arraybuffer';
draw();
}
ws.onmessage=function(event){
//alert(event.data);
//ws.send(event.data+"client");
qrCodeImg = new Image();
qrCodeImg.src = event.data;
context2.drawImage(qrCodeImg, 0, 0, 400, 400);

}
ws.onclose=function(event){
alert('close');
}
ws.onerror=function(event){
alert('error');
}
//video,标签模拟视频

</script>
</body>
</html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>客户端直播页面</title>
</head>
<body>
<img id="receiver" style="width:720px;height:480px">

<script type="text/javascript" charset="utf-8">
var receiver_socket = new WebSocket("ws://182.61.42.187:9501");
var image = document.getElementById('receiver');
receiver_socket.onmessage = function(data) {
console.log(data.data);
image.src = data.data;
}
</script>
</body>
</html>

swoole视频直播的更多相关文章

  1. 【腾讯bugly干货分享】HTML 5 视频直播一站式扫盲

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1277 视频直 ...

  2. 【腾讯Bugly干货分享】H5 视频直播那些事

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6503dfcb22007ede8 Dev Club 是一个交流移动 ...

  3. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

    ​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

  4. iOS----集成ijkplayer视频直播

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  5. 使用Quicktime 实现视频直播(Live video using Quicktime) (转)

    Quicktime是一个跨浏览器的播放插件,可以实现RTSP视频直播,可用于电视直播或视频监控平台.本文主要讲了关于播放器如何实现直播.事件响应.播放器全屏.动态修改播放路径等问题. 需要准备的软件: ...

  6. 超强教程:如何搭建一个 iOS 系统的视频直播 App?

    现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播.作为开发者来说,搭建一个稳定性强.延迟率低.可用性强的直播平台,需要考虑到部署视频源.搭建聊天室.优 ...

  7. iOS集成ijkplayer视频直播框架,遇到的bug和坑...

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 32.0px "Helvetica Neue"; color: #555555 } p. ...

  8. 集成IJKplayer视频直播框架

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  9. 视频直播APP开发分析

    视频直播APP开发到目前为止都还是热门的一个行业,而且发展到现在直播的种类非常多,很多行业都打入了直播行业,再也不是单纯的人物直播这么单一了.视频直播APP开发行业就像是吃螃蟹,来的早的人不懂如何吃, ...

随机推荐

  1. 【Zuul】使用学习

    [Zuul]使用学习 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <arti ...

  2. Chrome浏览器字体设置低于12px无效

    在Chrome 在IE11                 本来以为是padding问题导致出现左右两边的底部不在同一直线(在IE上),在Chrome显示是正常的,查了一下,IE11和Chrome都是 ...

  3. 搞懂toString()与valueOf()的区别

    一.toString() 作用:toString()方法返回一个表示改对象的字符串,如果是对象会返回,toString() 返回 “[object type]”,其中type是对象类型. 二.valu ...

  4. IUSEP研修报告

    目录 Introduction Alberta - Edmonton University of Alberta IUSEP Schoolwork and Project Principle of F ...

  5. hdu 1394 Minimum Inversion Number (树状数组求逆序对)

    The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...

  6. ES6对正则的改进(简要总结)

    文章目录 正则的扩展 1. RegExp 构造函数 2. 字符串的正则方法 3. u 修饰符 4. y 修饰符 5. sticky 属性 6. flags 属性 7. s 修饰符:dotAll 模式 ...

  7. Ansible配置批量推送公钥到被管理端

    01.yum安装ansible(推荐) sudo yum install ansible 02.配置被管理端主机IP清单 [root@ansible_50 ansible]$ cp /etc/ansi ...

  8. 初学Manjaro

    近期,看有朋友在使用Manjaro系统,感觉这个系统挺不错,于是我也安装了Manjaro,学习一下!!!! Manjaro下载地址:https://manjaro.org/download/ Manj ...

  9. openwrt_在PPPOE上网的同时_访问光猫

    openwrt_在PPPOE上网的同时_访问光猫 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-11-14. 参考文章: 光猫桥接模式下,通过路由器访问光猫.简单设置 设置Open ...

  10. 【服务器踩坑】SSMS链接Ubuntu上的SQL Server 2019 报错 TCP Provider: Error code 0x2746

    昨天在一台Ubuntu18.04.2 上安装了SQL Server 2019 for Linux 服务正常启动了,但是却无法通过命令行工具或者远程Windows机器上的SSMS链接. SSMS错误是 ...