管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
: X8 I$ [! x5 n3 ]0 e上代码 前端 观看页面 - <script type="text/javascript">3 h' s$ g& [7 G3 Y- v3 w# I. X
- var ws = new WebSocket('ws://192.168.0.150:9502');
9 ~3 r4 Q7 e- W
; ?+ m6 B/ e$ A5 a3 m- ws.onopen = function() {2 M2 a5 F& x6 W! u1 i9 Y: D
- console.log("连接成功");2 s5 r4 H) q e; Z [/ F
- };
# u/ x, z# c" K- a B - ws.onmessage = function(e) {+ ]4 A% {( r7 ~4 d8 c `/ @: g9 f) \
- console.log(e);
" X& P: q3 C3 |8 G
5 i" v* f' v5 V/ g) t4 ^/ Y+ M2 A- var data = e.data;# b* x: S$ f9 X+ Y4 k" U
- document.getElementById('player').src=data;
, i8 C" B% |* T. _2 ]; e& m+ ~ - };- ^" p# |9 p# W d' w4 [4 Z
- ws.onerror = function() {
( K( t1 o9 I \5 D& d+ e - console.log("关闭连接");" X0 L( p5 j e
- };
7 \% t& ]# r/ S0 ~ - </script>
复制代码录像页面 # X% @! i; Q$ F) M# Z9 [
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
: {, V; N7 g# m0 J2 y- f - * F; o" X" M1 k# A; A
6 G" c$ \ r2 P* j& O: B
0 a2 U8 Z5 y P1 E- <script type="text/javascript" charset="utf-8">
( @: f. `5 @$ K8 w. a
" W% @& s: _) g-
. s" p6 |/ I6 y3 `' ?, [0 Q - var socket = new WebSocket('ws://192.168.0.150:9502');. y: g7 X+ u/ E5 x8 J
- //socket.send("嗨我登陆了");
" w9 F. |2 E7 g, I* `, U
/ v5 ?$ t: `" x s# X5 x& M( y- var back = document.getElementById('output');# d. ^7 z' w/ ~& c' H9 i$ s/ P' J
- var backcontext = back.getContext('2d');
X) L# _; q! }5 W1 c0 { - var video = document.getElementsByTagName('video')[0];$ H, y% C5 D+ H5 {
- 4 r4 W' ~9 i2 a- d* i% D: {
- var success = function(stream){
# W# j3 ~7 G1 ^' x; [+ C# g" O- p - video.src = window.URL.createObjectURL(stream);7 m. v1 E0 m4 K4 A) A6 Y& N
- }
' ~5 x6 \- @) x9 ]. q4 \ - 8 ?4 J6 a ?/ @$ X) U# M; e
- socket.onopen = function(){
J1 B3 x& [: p- ^/ E9 M - draw();2 g2 j2 T) Y) Y5 S; j- T7 H
- }4 S- T3 c. P* a5 J+ W( d/ k }
1 W* r" ~3 ?6 `% R: Y( L. q& F, a5 C- var draw = function(){* P) j- s3 ~: I( l* k" S: m
- try{! g* W' Z4 ]' c
- backcontext.drawImage(video,0,0, back.width, back.height);
" t8 W, [% p- y; z5 Y - }catch(e){* e1 ~( o/ e% [# Y
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {1 ~5 [- h5 i. y. l
- return setTimeout(draw, 100);5 J+ D: S# h& K$ Y7 P ^1 f
- } else {
. Q1 ~! L: J+ t* P7 h - throw e;
# K5 y' a( q% d% u* @9 D - }) ~( f$ m( r% ^! r
- }
5 W( u1 X" F+ X! m - if(video.src){+ I6 I, r& e* T. M% e
- socket.send(back.toDataURL("image/jpeg", 0.5));) T3 b, P) q, |' h! K0 k+ \
- }+ z& [4 ?9 L* J; p/ p
- setTimeout(draw, 100);
3 o8 j9 J" T/ f0 ^ - }, J# n/ f& c/ L! o* ]
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||; h8 o( f* K1 D7 R, f
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
9 j' ]# E7 A: L4 ` - navigator.getUserMedia({video:true, audio:false}, success, console.log);2 b- q4 N& C' _/ F
- </script>
复制代码- php7 M) d K5 ]. b
4 _) C9 S ?4 n6 _3 T- $server = new swoole_websocket_server("0.0.0.0", 9502);# U, @% M" w& J; y' o
- : ~/ }8 w( z0 h
- $server->on('open', function (swoole_websocket_server $server, $request) {
# A% K# V( v( t
8 X" T$ e6 v1 l! U9 N* N9 u- echo "新用户id:{$request->fd}加入了\n";5 P- k; `5 @1 T# P" x
- // echo "server: handshake success with fd{$request->fd}\n";. o7 O# K3 j. T- _ u, `6 ~
- });
+ b3 c3 a+ f9 Z' c9 g Z( z - 5 R( n2 a' {3 f, I% O/ u
- $server->on('message', function (swoole_websocket_server $server, $frame) {
3 T9 T8 s1 l( w+ l
' i6 Z/ Z# T0 l5 i! d$ F, d7 x- //循环所有数据' D# y% ?3 o# G- z
- foreach($server->connections as $fd) {
9 n2 T, o9 E/ l) k) I: j) D - //返回数据" w6 l6 ^3 Q! p4 g
- $server->push($fd, $frame->data);8 q/ X3 o9 f6 H$ g3 B8 F
- }
1 ` b! d0 G- j - % s# H9 F! j& H6 W0 d/ A% @- f
- });/ s0 ?. n$ B! [8 m7 r1 X( l& {$ P' W& ~
0 a: ?$ h& V! Q8 b# O2 N- $server->on('close', function ($ser, $fd) {
' ]5 ~9 v% m5 E/ S4 u - echo "用户id: {$fd} 退出\n";0 b: R% W$ |3 ^/ r: x* g. f
- }); W$ W: P" J8 ~7 K; [. T0 _
- 7 m) J$ n" g6 I8 }4 ]
- $server->start();
复制代码 - _3 ?6 C5 y' W. V/ G
' a' s& r' U: K" y0 G+ R1 T4 P! O, k+ ?% a/ w/ O- D
/ D( ?/ C2 U2 i& r- t* @) R! S
8 }2 e( m! \0 `0 g/ H4 ]; b* ~
% ^" g' ^$ z8 L* T9 [* `
$ L' O: Y" G# ?, w2 f# J8 ~, w& n& n8 F* f/ }
, h! j9 d! z7 o. H8 ?+ M2 A3 P9 f7 s9 d( |* u
2 w u( Q: Q# G+ P) @6 P# {+ T. J5 c6 P6 k
|
|