管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
" |6 B+ O5 f3 l( B上代码 前端 观看页面 - <script type="text/javascript">
4 p& S" I, s3 J% l - var ws = new WebSocket('ws://192.168.0.150:9502');0 k+ ]* e6 u% w/ I
( ^8 i' c6 n2 K' T; H0 j0 ~4 R7 X- ws.onopen = function() {
: w& g4 H$ B @ - console.log("连接成功");
% }( }: M) h+ G) q - };
5 N- L9 `. W& k# L r! A: c - ws.onmessage = function(e) {7 ?: x1 p. K" U' u$ T) V5 L) R9 ^# _
- console.log(e);
; N0 v0 ]& y/ M1 l6 \% M
& W5 z6 O' y9 a$ L' t/ k- var data = e.data;7 y- m2 B, Y- J7 n
- document.getElementById('player').src=data;
0 G, X. g6 ?: i% Y7 j8 G, q3 u5 g - };
( V7 s6 s: @1 ^$ ~4 z - ws.onerror = function() {4 ~1 e. O7 E6 S2 C0 T& |/ q
- console.log("关闭连接");
8 I7 C* C8 A- N. e; { - };
! i9 o; _) t. q; i, C2 A - </script>
复制代码录像页面
" g6 e; f* f8 F0 E. V最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>8 M3 a6 y z! V1 Y& S& U7 g' ^
( \2 f) E+ o% ^5 `9 R$ {- ) z+ E& ]! D" T: v ?2 G
) I/ Y- n( V7 r. s" z( m- <script type="text/javascript" charset="utf-8"># d* B. u& G5 J" q3 z
- * E- |0 Q: Q# u: z
-
; A( r' a6 w5 U. _& [, S' @ - var socket = new WebSocket('ws://192.168.0.150:9502');
5 |( u& ^; l& W+ V& p- V0 l/ O - //socket.send("嗨我登陆了");
. t, `, y7 p4 Z% f
; t9 E% Z) y# c* q- s X) m- var back = document.getElementById('output');
3 }. [6 q" J2 M% N: C - var backcontext = back.getContext('2d');& l- p7 Z0 P8 B. U6 v$ L
- var video = document.getElementsByTagName('video')[0];; k. N3 b, B, i# b: V) |
- * x' ?( A# t3 w* d! m" c5 j
- var success = function(stream){
8 m4 ?( d: y. J6 [3 R - video.src = window.URL.createObjectURL(stream);. K% u% U; P, C
- }
! u: J. I2 ^) O6 Z4 J - 0 H; j0 y( n( G- H* P: p
- socket.onopen = function(){
+ j K7 q- \9 K: a# | - draw();
+ K/ G: j2 |9 F+ k - }
; b+ y- u8 C+ V! m; r) u: V H - ) k' A+ O; c4 j& k2 C
- var draw = function(){4 a8 R+ O( l# f
- try{3 G+ ~+ g P$ J# D( c, x
- backcontext.drawImage(video,0,0, back.width, back.height);
+ H+ d* a5 Q* x5 f - }catch(e){' p: x% O* N* e0 J
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
; {6 ^' Q3 B4 P% r - return setTimeout(draw, 100);
$ V8 b5 b h' P7 M# r$ e( o - } else {( z' i4 T+ p9 y# f" z
- throw e;+ `! A l7 D2 v' z; q
- }& Y/ g" ^) N, E. w7 {* V( ]
- }
A0 X7 Y2 [& o* B9 ~6 |+ B - if(video.src){ G+ J. m9 L' K% o3 F c1 o( M
- socket.send(back.toDataURL("image/jpeg", 0.5));
; D" m7 r- v/ L - }. @ p& ^& ^. w8 C9 [! P) m
- setTimeout(draw, 100);
. ^7 M6 V7 W- Y; \7 u - }
, U' N5 b* Y9 _ b: z z - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||, e9 U/ W) [& s* R' E" l
- navigator.mozGetUserMedia || navigator.msGetUserMedia;) |! ?$ T+ P5 y! P
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
7 s0 F1 l6 |0 l$ E; |, X8 H - </script>
复制代码- php
# k$ t$ D3 [4 W4 r - # t. k, _1 d8 z" r
- $server = new swoole_websocket_server("0.0.0.0", 9502);0 N$ z' j0 H) n9 j
- , ?% a- M2 m& r& I3 x; K# f
- $server->on('open', function (swoole_websocket_server $server, $request) {# g) i/ y* R/ y! L* {
- $ ?$ a( J$ o# z2 z+ ^- B5 ]
- echo "新用户id:{$request->fd}加入了\n";
4 N1 B3 {. E' E3 b+ ^. D - // echo "server: handshake success with fd{$request->fd}\n";
/ j6 e+ K7 }$ T' T0 O/ F/ S+ _6 @ - });
$ c& r) x7 W) X% c6 ^% a C2 o
; c m* N7 F) m9 v, l- $server->on('message', function (swoole_websocket_server $server, $frame) {
, Q) G; P8 ~8 O Y: W
9 e5 A9 r* q3 [3 H- //循环所有数据
, x( @( E" l3 a, @ - foreach($server->connections as $fd) {1 t7 k4 h5 C" u, Z1 D# J- ^
- //返回数据
: m' D$ ?* @; l# U3 h - $server->push($fd, $frame->data);
7 e' Z1 F9 f: z; S - }' `- c" H9 Y9 q: c
- 8 ?7 L/ b U; S- `- y5 d1 Z
- });- a% q/ Q4 ?; X! c
( N E3 J+ S; x T# [/ W% M- $server->on('close', function ($ser, $fd) {# m l0 C3 ]5 J8 ]9 L/ T+ u7 M
- echo "用户id: {$fd} 退出\n";# ~* j4 B0 _: u
- });) M& n3 ~3 p7 q7 }
- 9 b! T' B5 B$ y" y8 e6 M
- $server->start();
复制代码
" X$ `8 p' ~5 ]* D c! f' L" l5 y- `$ L
4 p5 Q; @/ b4 ]- H
1 m. Y" P5 ]; }6 @
5 @5 W5 w$ s& y' p& K# ~8 [4 C3 x4 Y+ `% s
3 b/ K1 A: P6 C5 I+ F. @6 m
+ t5 @- l* J5 i! v* |1 D* X& s+ L5 |9 U8 R
/ c; _% C2 s8 z& v6 |8 \4 Y& k. A8 k; A2 d
% E4 y; R1 a0 c+ R( y3 K( [
|
|