管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket# K# f0 \8 z+ P
上代码 前端 观看页面 - <script type="text/javascript">
4 O) b% B, a' u+ w3 v! H( R, D - var ws = new WebSocket('ws://192.168.0.150:9502');
" P4 X5 t H: @3 e- @4 R% Q, ]6 I
" _' C5 z" J: A- ws.onopen = function() {0 U+ J: Q" U! E) z* t3 F. S5 ?
- console.log("连接成功");
5 Y7 K$ Y( L% E) b5 s - };
7 n* w. h0 f# i$ `$ B! ]2 r1 D - ws.onmessage = function(e) {% F6 u+ K, H9 I1 S6 v
- console.log(e);
+ ?0 } c& J& f* v# J. T
+ J/ ^ `& j5 q9 c3 E: [5 S$ d- var data = e.data;
4 J: _0 M5 s, G$ l9 ^) v; m - document.getElementById('player').src=data;
$ ~& `/ q+ i; v6 x - };5 @, D+ `7 D E6 Q
- ws.onerror = function() {$ u- T* ?5 D2 B: _8 a7 s
- console.log("关闭连接");
$ z3 A* ~" p3 ~2 L% } - };
0 H- K) s9 C) Z% T3 ?: o: t - </script>
复制代码录像页面 0 ]; V Y* N1 `7 X( m; U
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>7 t- E& A y' R- e0 ]0 Q1 {
2 M" S' y* s& T+ S- ; b3 |1 D4 | N' y
4 j9 q% P3 s; ?5 `% W; ` H- <script type="text/javascript" charset="utf-8">$ x4 ^' }9 ~4 E5 H% N: w
4 E+ Q% k, [) @* q, E# d-
6 d m. n" }# I& k - var socket = new WebSocket('ws://192.168.0.150:9502');" I& a' c( @6 n! y' E- I8 B3 ~1 |
- //socket.send("嗨我登陆了");
: ]" q2 G: X3 F- Z& \
; A9 l+ I3 o$ |, u- var back = document.getElementById('output');2 A5 P: @$ N" A/ W
- var backcontext = back.getContext('2d');/ j ?$ i4 `+ S5 ^7 T8 Z; b& p
- var video = document.getElementsByTagName('video')[0];
' O7 {$ {( Y L7 G% V - , B5 g& ?5 |& U* s- n! H! x$ ~
- var success = function(stream){
6 M& x0 c3 q% R! W& g1 x - video.src = window.URL.createObjectURL(stream);- ~6 a7 G; B5 T8 G1 `0 T3 L. G
- }
5 m) W8 A+ i5 |6 D+ S$ r# j( Z - % t/ g! p; Q6 o, F0 c
- socket.onopen = function(){
1 s$ r5 s0 v2 l. {4 l6 X - draw();( f& }% O8 N- W! ?* S: k
- }! z6 o3 |1 A- e# ?) f1 w: ^
- ! B2 G7 g3 ]( G
- var draw = function(){; |" J6 R: @1 h$ e- S5 T" K" S
- try{: @- K, A$ A* Q, I+ f
- backcontext.drawImage(video,0,0, back.width, back.height);; b+ x# ?: u. s5 m( O9 Z
- }catch(e){( f) X% N3 b1 |+ j4 a& t' I
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
& G7 R9 M1 B: t9 q$ e - return setTimeout(draw, 100);
' f' v; w. a6 m' ^: a& S% f9 _3 _ - } else {* ^. ~0 ?3 ^; z" \5 t9 T/ m' v; c- L
- throw e;0 _/ e* C- X6 ~' ^3 S
- }
- r8 r& ] t: b - }/ q# i5 Z7 t1 `+ U, n
- if(video.src){7 c. y0 ^6 Z: e, m- X) D3 g
- socket.send(back.toDataURL("image/jpeg", 0.5));
I. z @: I; V+ B* |/ U) B& I - }
% V8 P( e7 l1 Q9 g - setTimeout(draw, 100);
# Z T2 h& T& k3 U8 X! H - }4 ^& v+ E6 M& v' q
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||% G" ~% }' d5 ^" M
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
/ `5 ]$ B9 K$ C6 l8 g - navigator.getUserMedia({video:true, audio:false}, success, console.log);
( U6 j1 {1 R4 N& q* @7 L; m, e: G; w - </script>
复制代码- php% H; [; i: |. E% b
- ( ~! ]- t6 {8 K2 Q: ]
- $server = new swoole_websocket_server("0.0.0.0", 9502);
. h$ ^/ B" n' r. w5 j1 p - 6 B7 I$ A o" s6 k$ c
- $server->on('open', function (swoole_websocket_server $server, $request) {* T* s- x. ?+ F& O
- 4 ?: t7 G( j7 e2 \ f5 c
- echo "新用户id:{$request->fd}加入了\n";4 q) }8 F$ c _) b7 t
- // echo "server: handshake success with fd{$request->fd}\n";. B8 h: x' A6 [( D' X9 l
- }); l6 ~$ I3 t4 N$ N% z7 H( R$ M
' K' x7 y& Z5 V8 L# ~- $server->on('message', function (swoole_websocket_server $server, $frame) {" y( J6 r$ C$ B! ]0 D6 B. a
- - n. B$ U b7 w6 | E' [* Q
- //循环所有数据
4 S: z; ~) X( ^& z; N1 ^ - foreach($server->connections as $fd) {
9 m4 H" O7 t0 {5 o - //返回数据
8 n& s; Y# x% E$ M0 F' E2 v0 @ - $server->push($fd, $frame->data);
3 y3 S2 ]: R! r8 ` - }3 R/ d0 V5 N; B
8 i4 j( _ |& O2 ~# O( v$ S* T+ P8 f- });5 f3 w# B) @" W9 X% W5 A, |
8 m% h; p' m% A3 d- $server->on('close', function ($ser, $fd) {
' u( _- _, k; h& ~; O, u! L( W - echo "用户id: {$fd} 退出\n";) o& i) m% o9 f! j% \; d, `
- });
' Q8 H* q7 R+ u y9 R
& n: b- |# x: T9 P; M$ n9 V- $server->start();
复制代码 ) o- ~+ y% b4 q- b* T& D
/ B% _! v0 |. v4 h. r# u: e
# f& O4 z3 N" u) D3 X' u
) Y" ]: D" [/ G1 X
9 S7 M) F* {" l& t0 J; T! a9 M2 ~+ W% b: w" h
: c+ ]! b( h- ]6 p \: n$ _6 G6 I$ J/ O2 [- X
+ d1 m" x, f) Y
4 z1 q3 t- ~8 V' M8 V+ r, M7 p/ V& O. ]! u& T
/ P% g9 Y% y: T* d$ } k( ] |
|