管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket B8 K- k3 y- Y7 T3 ^0 \
上代码 前端 观看页面 - <script type="text/javascript">0 l" A( T: ^9 I
- var ws = new WebSocket('ws://192.168.0.150:9502'); V( f0 `6 b8 R% O" R
+ w$ O: L+ T) B% Y: e- ws.onopen = function() {
( y& D5 `8 Z. R' F/ j8 Z - console.log("连接成功");
2 r: \6 c: Z g( U- N5 j% E - };/ Z4 W9 O( }; H Z! s( m
- ws.onmessage = function(e) {
9 q& k9 \, E' d$ D6 \ - console.log(e);$ z, E8 I5 |5 U7 [% I
- 8 H3 N& B3 ~: c0 l7 ~
- var data = e.data;3 D# G+ \& E4 h+ I# O) u
- document.getElementById('player').src=data;
+ n, L2 B6 E( C9 h - };$ M) T- b9 ?) A5 {/ G
- ws.onerror = function() {8 m C+ U3 `7 T% @9 Q
- console.log("关闭连接");" t0 ]& ~, I& x
- };
- h# E" D8 R4 r5 ^- A - </script>
复制代码录像页面 , T2 [) I2 e( c; L( N# `
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>$ ~1 I/ k/ H0 ^& ^* r! L
" P5 Y% z* c- ^: f& H9 {- % f! R/ p: v# Z% O
- & a6 H7 E6 [( X8 }! Y
- <script type="text/javascript" charset="utf-8">- b+ Q! z' t0 L4 m$ Y
5 W* f2 e5 o0 z-
7 w4 s, T: E* i2 S. G8 v - var socket = new WebSocket('ws://192.168.0.150:9502');0 [6 @. ]7 X3 u# g$ q0 D. `+ }" l
- //socket.send("嗨我登陆了");
: h b+ J; v( |- t+ m+ X
4 K! l8 K9 `, \, u- var back = document.getElementById('output');* W8 p4 ]% i: r
- var backcontext = back.getContext('2d');9 m9 ~5 V4 X6 r: K
- var video = document.getElementsByTagName('video')[0];
& W' E3 ^$ Z. Y0 b - * X. ^0 U( \ ^9 H' Z. [' B' Y2 d
- var success = function(stream){. p, }$ D. [' d w: i% L7 G
- video.src = window.URL.createObjectURL(stream);
1 d$ s# V7 M* ?' S/ s - }: O' I4 S8 A4 t3 F% e" l7 q
; `" b2 }& E0 K( C- socket.onopen = function(){
( | W2 R) h& ~7 R3 O+ k - draw();, ~$ [; h4 a \/ M( e
- }, S5 _+ J# X6 \7 b
; A0 ]. C2 K; b4 Z2 D' {- var draw = function(){/ Z2 x: I1 W8 e$ D* I- C0 r: X
- try{
! Q* t! j0 t. m) ] - backcontext.drawImage(video,0,0, back.width, back.height);, d; \' S1 z7 ^3 z$ e! h" F
- }catch(e){
' x5 q) V" q3 b n1 A. p; X* n - if (e.name == "NS_ERROR_NOT_AVAILABLE") {) a/ }* w& U. j; ~* a! g
- return setTimeout(draw, 100);/ Z H l$ a) J
- } else {% O- d2 p# P6 r
- throw e;) W# g- ?2 L; u& W) R
- }8 V B; h* z8 Q+ b6 n. u- p b2 w
- }( y, P. v* S5 |8 }. w; W( A# g
- if(video.src){* J# [5 p8 y+ p' C; F
- socket.send(back.toDataURL("image/jpeg", 0.5));/ d0 B9 |" I, J" i
- }
% M* g9 o" M1 |0 B1 x3 q& f( B - setTimeout(draw, 100);* U7 o6 j% O, x/ |4 x. l. u( G6 P8 w
- }
/ q* ^) v/ t/ o5 r' A0 w* o - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
: J2 _3 C: U4 Q$ s+ Y - navigator.mozGetUserMedia || navigator.msGetUserMedia;
- J! M0 s, d0 N, p - navigator.getUserMedia({video:true, audio:false}, success, console.log);, G' R$ i+ R e
- </script>
复制代码- php& O1 @- g: a# p" h3 @( i, ]2 [' ]
- 5 N) i C& {. ~* r. W! |/ Z% U8 y
- $server = new swoole_websocket_server("0.0.0.0", 9502);
2 ], D% Z8 W# { - 8 s! D H# t) @) b. N. J& W
- $server->on('open', function (swoole_websocket_server $server, $request) {1 } ^% t; t* L
- " ]$ V& ~6 A1 u
- echo "新用户id:{$request->fd}加入了\n";5 S6 h" x1 M5 K/ b7 R" k
- // echo "server: handshake success with fd{$request->fd}\n";# z3 X1 S# c( x+ u
- });$ o. j- h! X5 S4 V& y* n t
2 j0 V% O! U% k1 e5 ?, ?1 B- $server->on('message', function (swoole_websocket_server $server, $frame) {
3 Q9 @0 ?( U1 \/ O2 k6 \6 U
" x1 |2 I3 n6 ]! a: g0 h7 G$ G- //循环所有数据7 O5 }/ t( c7 a! y- @
- foreach($server->connections as $fd) {
* |5 e( i+ J- p7 B( a$ R! j - //返回数据* \ O. d$ L8 f" A& M! F# P6 e
- $server->push($fd, $frame->data);7 V) C" Y9 Y9 M4 J" ?9 T2 C) k
- }
* o+ A) {3 G7 @0 m7 z9 q
$ _, e! G! l; P0 Y/ Z- });
5 x& L3 W. b# d9 w e* P2 x1 t
0 j2 r% k: M' l- $server->on('close', function ($ser, $fd) {1 i1 V$ D e7 V8 \0 @: j
- echo "用户id: {$fd} 退出\n";, \3 i0 h5 y9 S( R1 h+ q! _# H# M
- });0 N* ~, _# j& y$ Y5 J& t
1 F1 ^ c2 f+ c) Y* A+ r- $server->start();
复制代码 6 q z& ]/ |6 ~3 e9 U! T
! t% G; }% M) }
) w" C: V, a; [5 [/ Y/ k B n
5 Q6 O" E; ~6 E# V& G! }
: i4 B% T8 D+ ~+ J- x5 l' k2 E( F; P3 [
& a% N( M9 B( f8 c. q |! x
3 A/ E( S/ Z* [
8 v: l/ @$ ]( o* V0 c) ]+ @# }7 Y; \+ C3 n1 t! c5 t; i
: z/ I/ l4 p; C8 M# H7 G, n# {# f+ V3 U. {7 F4 y# U
|
|