管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
. E& Q2 O! w/ c! o; ]; J上代码 前端 观看页面 - <script type="text/javascript">
3 K; q% l9 \# F* `0 l9 V4 _ - var ws = new WebSocket('ws://192.168.0.150:9502');% E" d1 L2 R i% {, ~
- ! H2 u# d% Y$ G" W" Q1 e
- ws.onopen = function() {; Y6 j5 |; Q3 H/ W
- console.log("连接成功");" C, J/ X4 t# f7 d8 r2 `
- };# W* ^& d0 ]0 T& y8 n3 t
- ws.onmessage = function(e) {6 ~3 Z; V+ W9 q7 f
- console.log(e);
# O1 Z) y m. u! q2 y K2 \0 B$ G5 R: W. R - 5 I! j |/ y7 h1 E6 o! k1 i
- var data = e.data;
o: N$ W, b0 b+ G - document.getElementById('player').src=data;
- Q- M7 e2 ]; a' N8 Q. R - };' F6 W! Y7 s1 Y, w7 c
- ws.onerror = function() {& K: K% l! @- s& v& ^8 U; F+ z4 Z2 ~
- console.log("关闭连接");# f5 M9 s# X( f+ A6 U
- };
& r% e( j A/ R6 F5 N) w8 L - </script>
复制代码录像页面 + q t" b" g; }$ ~6 I
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
( G3 c# Q# ]5 s/ t: X0 C" ] - + ]% [( u+ U8 I: w
4 [1 o" \# {7 j% @' k& t
9 j* j/ X, i/ ?( Y x, _- <script type="text/javascript" charset="utf-8">+ Z( }* l8 f+ L3 U) \/ c
- & o9 x7 a3 L Q! C3 H* X- x8 {+ r7 }
- + M: d$ t( g! r9 H1 K; p" \% {" k
- var socket = new WebSocket('ws://192.168.0.150:9502');1 i' h8 u3 m2 h- Q- S9 S' r
- //socket.send("嗨我登陆了");9 H+ Y, v5 t" M! ^( r1 ^ ]
- # R9 T% {7 k" Q
- var back = document.getElementById('output');
- }2 V9 F+ l$ D( X - var backcontext = back.getContext('2d');
$ D9 I- m1 r# F+ a - var video = document.getElementsByTagName('video')[0];) {6 R+ V, _( p- x( S
-
, {* O! r% j) K- c& `/ y$ j - var success = function(stream){
0 G! B) f. `! U' M - video.src = window.URL.createObjectURL(stream);
: e3 ^0 J1 ?/ N& e. |/ _ - }
/ N5 K4 L+ X% y& Q, [ - 1 l/ _/ `# `* u( r+ N% ^
- socket.onopen = function(){' s, z1 |2 V0 Q& V& G
- draw();
/ _2 a7 P, N# x6 p" V% c - }9 i* z# i# ^" f- s& m2 ~
$ N, `* w7 g/ r! d7 f- var draw = function(){6 x i4 W$ R% ?) G3 f8 h
- try{
: e0 e: ?' U; u7 @4 F+ n - backcontext.drawImage(video,0,0, back.width, back.height);" g2 D! M4 W, Q1 Q2 K
- }catch(e){: @: s( p9 L$ q' g, U4 [
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
5 \6 L: |2 T2 O4 @9 ~ - return setTimeout(draw, 100);
2 L# u2 P0 ?8 V- x9 O: M - } else {
$ u6 P; a4 F3 Y1 l: J - throw e;" z; K$ _& |7 |- t% M; A
- }, s, _# ~1 O9 R7 b
- }" M9 b! N1 X8 Z/ h3 k- w
- if(video.src){6 f9 y1 D9 B) z n- m
- socket.send(back.toDataURL("image/jpeg", 0.5));5 _( q- a' z$ y5 f& Q
- }
6 M4 p' ~0 d! C4 [ - setTimeout(draw, 100);# K! e1 e, L' m, x; B
- }0 N N) M [8 W3 x4 U
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||/ Z9 m l, m8 ~4 F, a0 `! u+ N. B+ j
- navigator.mozGetUserMedia || navigator.msGetUserMedia;2 Z+ l/ l# R$ W8 |$ \( \2 R; F& P; q
- navigator.getUserMedia({video:true, audio:false}, success, console.log);! Q# _5 k- `* E, n9 b
- </script>
复制代码- php0 O) X D( B: \% [! T! b. E
- 5 L ~% H% G" [4 m# E
- $server = new swoole_websocket_server("0.0.0.0", 9502);, O, ^- @9 l9 `1 {3 `0 o
; z# p) l6 r4 e6 |$ l( P- $server->on('open', function (swoole_websocket_server $server, $request) {% w' H; a7 j B1 |. A
- 6 n" a, j8 N' p" A# C
- echo "新用户id:{$request->fd}加入了\n";; } N) o, a9 Z6 l6 h
- // echo "server: handshake success with fd{$request->fd}\n";
( |: ~4 o) z/ s) P; u. R7 x - });+ u" J4 W/ G$ l; L& R( v& u
- 3 ~# D$ Y2 I4 C! O. ^/ d
- $server->on('message', function (swoole_websocket_server $server, $frame) {9 I/ o9 u" N$ p. S: n: m
- ?5 M0 x! X$ O6 x& C0 X' R6 U- //循环所有数据+ [+ F S) ?- l; _ g( n! E
- foreach($server->connections as $fd) {; M* Y8 A" o- O9 Z, X! o
- //返回数据
: @4 z+ z5 ?9 k q- t$ e. W; \ - $server->push($fd, $frame->data);
/ n2 `6 H' X0 R- k$ _( X - }
; i1 ]7 I# z6 ~1 [3 |) \ - H! h1 }# U5 o1 f
- });
, o7 j) _7 F: Y
* ?% I! [$ d6 ^) i& J' F4 \- $server->on('close', function ($ser, $fd) {, d: x7 V: F% n# E; ~' y9 K
- echo "用户id: {$fd} 退出\n";% ]' ?, f" h4 e1 D6 A" |
- });4 k2 S4 T9 r) g) ]8 ^0 x n
- q' j% A* ?9 J- L0 X5 p- $server->start();
复制代码
( Y/ e/ [. Z* z' c% J7 M/ ]9 {0 v) g
7 L3 H. e$ b) {$ ?
3 d& J2 |4 H5 H4 r" R4 m) i! n7 b/ u8 G! `: O1 o
7 B$ D; R- c( U, K0 ?1 _* N4 I8 M
2 r. ?, o- J8 X/ X9 H5 Y* }0 u% }+ g8 ?) ]' A/ U+ [
4 R2 s7 h% W2 e
, O4 e; ?+ J) y$ S! ]/ w
/ d x) V$ X1 Z" \3 ~
% x% ]' o; |5 _2 w1 x+ \% x) V/ N2 `; }
|
|