管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket# M2 d d# h: ?( S& R! C
上代码 前端 观看页面 - <script type="text/javascript">8 t- D5 }, |1 C# s; |
- var ws = new WebSocket('ws://192.168.0.150:9502');
6 j) J: Y3 I, m7 {7 `6 E+ Z
! u2 g2 [1 `/ L3 w- ws.onopen = function() {
" _+ [ J8 J! @ - console.log("连接成功");
$ m) z% `1 W. ]0 j* t, g+ z8 {8 ? - };
/ R$ u% P4 V W1 }4 i' \' y& H3 T k - ws.onmessage = function(e) {3 g, u2 k; X: K2 J0 N5 x! |
- console.log(e);
4 Y A% w6 s3 I7 @7 q# T
$ Y5 l! L: G5 _, S4 O0 {- var data = e.data;
5 S$ @' Y# M* _$ J# Q/ Z4 R& r% L3 d v - document.getElementById('player').src=data;
! Q# _0 I" o4 l8 y- Z7 `, f - };% ?) \" A- U2 y$ e8 t0 d( B- v. k
- ws.onerror = function() {, f3 w% `. c7 Q1 _* F& x7 b1 a
- console.log("关闭连接");
9 t# y0 [& `" H4 ?, n. B* M% ? - };# }2 M) R2 ^% @- u3 G
- </script>
复制代码录像页面
) ~* M! f7 K0 j D; u最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>* k+ v% m" } K: J0 q0 S
T# \, C+ r8 U) K- j, k# b
, V9 q5 M9 F3 i7 @/ }3 z- {
, J+ o9 O% ?& ]9 b: X8 F- <script type="text/javascript" charset="utf-8">
F, S3 c) d" @8 J0 f* M' O
# q4 p. O) y' P- p; _& c- 1 Z6 L1 q' k, r& u' K. x
- var socket = new WebSocket('ws://192.168.0.150:9502');2 ^! [, S, C: Z& l4 @
- //socket.send("嗨我登陆了");) [" x' d2 h0 x2 R
- 1 s) w+ ~+ i2 |8 X
- var back = document.getElementById('output');
6 ~6 t, X6 X% t- M0 w3 T - var backcontext = back.getContext('2d');& Z# E# u) i- }+ V" \9 ~: O' X& I
- var video = document.getElementsByTagName('video')[0];
3 ]5 M8 q( ^5 |0 J" p* ~& T7 T - ; B' k' U$ t! E d
- var success = function(stream){7 ?! t5 H# W1 Z6 g
- video.src = window.URL.createObjectURL(stream);/ C0 w0 c# ^* y. {
- }
/ O2 w) B. \4 ?6 F: b' @& h' v - ' B7 {1 d _, K+ _' v0 ]+ A
- socket.onopen = function(){
6 `5 L4 K- o, N2 r9 N: |7 e - draw();
4 m1 Q! e; h$ \6 f5 ] - }
( F' c$ v3 m0 E* r. G( q7 c
6 ] ~: a- f5 L* h. M- var draw = function(){( t# e5 ?' B5 L3 I9 ?
- try{* r/ A7 L9 E2 O$ O) x7 x0 A
- backcontext.drawImage(video,0,0, back.width, back.height);
" V/ @. b7 G9 b) H0 D: f& p( ? - }catch(e){& h4 t3 Z7 B2 V R
- if (e.name == "NS_ERROR_NOT_AVAILABLE") { d5 J; u9 Z# o! h( b1 J
- return setTimeout(draw, 100);
4 |; E; E- U. x; q7 k - } else {
, F1 U. o- u" t- v; e( \ - throw e;
6 S& N' P8 f) D" _) r - }( z7 F8 _. @! |# ^% h' l) V4 Y
- }4 q( h. D* a/ [8 r) V) ~
- if(video.src){& ~2 [+ `) H# O# @
- socket.send(back.toDataURL("image/jpeg", 0.5));2 T j( d2 Z0 d" }
- }$ `( w1 T4 `% E4 ?( l9 c) E* W( u: b
- setTimeout(draw, 100);2 N# f6 L% O0 G; }
- }
) }1 [5 u5 P' V- R/ e - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
; L2 B( n# i; M: G1 ~ - navigator.mozGetUserMedia || navigator.msGetUserMedia;
a6 l; W, C, ] - navigator.getUserMedia({video:true, audio:false}, success, console.log);+ a9 ?# x' q( z, @3 ~
- </script>
复制代码- php
6 ^% I! o2 H+ q - ( V7 P( g/ d1 P8 a& q
- $server = new swoole_websocket_server("0.0.0.0", 9502);
$ O( ]% f" D6 h1 S5 ?5 s - ( r& }# P' C B$ X4 B8 \! n
- $server->on('open', function (swoole_websocket_server $server, $request) {- X a9 F& C9 {" ^$ q" m; A
- " U& Z. ^( r- [
- echo "新用户id:{$request->fd}加入了\n";+ n7 p. d+ a8 [+ H) _4 I/ P
- // echo "server: handshake success with fd{$request->fd}\n";" D" _$ j- C2 z
- });# R6 n# Y( e8 F) e# `
- # K5 N* M9 A: ~- z7 b3 \: ~
- $server->on('message', function (swoole_websocket_server $server, $frame) {
h! ?# Z# c3 v$ w8 l a: h
" s4 q+ m' T5 c8 ?. r- //循环所有数据& I: X% H/ o# s
- foreach($server->connections as $fd) {
" ^& H5 |7 s- |4 `* l- r5 E - //返回数据
3 l5 M" J8 N4 k; |+ [ - $server->push($fd, $frame->data);
1 n7 U. B2 S# ]* H4 W1 S7 B - }1 D4 r T! Y. {, J% u
9 p$ D" \5 X2 O3 d: o: L9 a- Z* n2 q- });
: d+ ]1 U! b3 h - 2 z0 W4 V& P0 {6 Q# C% C' X( b
- $server->on('close', function ($ser, $fd) {
* ~8 n+ r: q" Q2 H$ Q - echo "用户id: {$fd} 退出\n";/ v$ @2 |$ j" y2 q# @& x/ \
- });. z4 s! G. U3 o& l/ S6 Z- y1 u
/ b3 l# m8 G) D! y+ G# j! b- $server->start();
复制代码
0 o; [" W9 g# ]: q' q, A4 B; f G% L4 X ?1 V4 v
' i) N7 T0 z6 T5 \& {5 r# X7 @- `6 o# z$ ^. k2 t6 A5 M
9 T) ?- ?) G) x9 [
+ ?4 ?: G, s0 C
@8 l: O/ v! b7 r& _7 s, Y
. j: B- }% e$ y9 @: r" y
1 o# r+ X. l: ~0 x6 ~6 |. l. I/ e6 x5 T; {4 n
( X6 d0 g+ h! E' B( o
- {) {/ @9 F2 ?/ ?" R; ~9 y |
|