管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket& v2 {$ \- T3 G. F+ I/ X( c
上代码 前端 观看页面 - <script type="text/javascript">. [6 @% V4 c3 x
- var ws = new WebSocket('ws://192.168.0.150:9502');
" f$ z/ E9 h Z$ ~2 i1 p - 1 ?( u+ ?; t' _- i6 z
- ws.onopen = function() {6 J% u1 O$ }+ @1 ?1 c. b! k
- console.log("连接成功");
. p5 z- w. R2 x& P0 D5 ^2 O9 D6 E) | - };
. D* t5 E" `6 o - ws.onmessage = function(e) {& O0 T( k& v8 U( X
- console.log(e);
' O( D9 b9 D* I, B9 S- A - 1 @1 s: c0 H0 Q* B
- var data = e.data;1 N! v/ [, W$ a# a! ?: m
- document.getElementById('player').src=data;
3 W- E, u) m" t2 ^% p8 ` - };2 K- |# L7 v" Y3 x/ F
- ws.onerror = function() {4 F5 v6 J, p$ q, Q# M
- console.log("关闭连接");
# o. }$ a( O7 J) s$ X: H% b0 d" f - };
: I5 E" o/ f: F! | - </script>
复制代码录像页面 # n. Z& M# p) Z- f& g& y, B. l
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>* V/ K& k( X! r$ s; n, h( ^
- ) P& m: S4 G$ n0 J$ x
2 I/ h. x7 j3 Q* }7 k- S
# D, @& z" W9 F$ F0 X9 ~- <script type="text/javascript" charset="utf-8">
% x5 F- ^# E" Y6 y i - 1 X4 \9 T0 E( V8 Q9 q
-
# ?" c/ u7 @6 F - var socket = new WebSocket('ws://192.168.0.150:9502');9 _! K5 X" b4 q2 `6 n* e$ C
- //socket.send("嗨我登陆了");
5 R. d' Q7 |5 w: n$ ?# ^
+ M! g0 x7 {9 Q- var back = document.getElementById('output');* E* |) `1 N. E. V- B3 E7 j
- var backcontext = back.getContext('2d');+ Y( f' p6 x1 O9 f) N- j
- var video = document.getElementsByTagName('video')[0];
# s( [ _2 M; o0 m+ K - & B5 \( t. s' L! p( s% V2 @
- var success = function(stream){
: `7 y" ]4 z: O - video.src = window.URL.createObjectURL(stream);
1 W) [4 I# H7 o - }
2 I8 q9 H3 x9 J. ~- J+ d& v - & j2 `" t) }& P$ J# _7 X C9 z
- socket.onopen = function(){
& y9 s) @$ b J0 Z, F: U2 W - draw();# G" y4 @; G1 m, s% [; M
- }7 R- Z& U7 n/ u) {/ A
$ r) b- ^. w1 `8 k- var draw = function(){
4 P0 S6 n& Y( `+ U - try{0 b# h s+ u9 M
- backcontext.drawImage(video,0,0, back.width, back.height);: r) x& D3 l+ V& p
- }catch(e){
5 p& |7 I# A1 k6 Y - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
9 d5 F7 I' m" q - return setTimeout(draw, 100);
6 y% p3 R$ e$ | - } else {1 ?; S8 X. I% Y$ W
- throw e;9 D/ V7 T. Z: R/ E6 t, `* E. [, H
- }
" ~1 `4 b9 p+ _6 x# b P - }
' F) \. V( `9 {! O2 P s - if(video.src){
& b- M1 E0 s! m" y1 r; p - socket.send(back.toDataURL("image/jpeg", 0.5));
) G D! P/ e0 ?. ]. A3 } - }
2 [: P$ y% W3 [4 O& {) T" d% c - setTimeout(draw, 100);
' b2 E9 m) P! f, ?% h3 m; i6 ~# Z - }8 @1 j: o* S0 a( D1 ~
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
3 ^* O" ]' u! z3 }5 I6 u* ? - navigator.mozGetUserMedia || navigator.msGetUserMedia;
- V$ D" U& j% }1 ?- _# V' D - navigator.getUserMedia({video:true, audio:false}, success, console.log);& F( [+ ]( T! H5 R( k/ w7 i4 G
- </script>
复制代码- php0 O5 i7 E& |! G, y5 U! x
! f- U1 d6 S5 U3 r- $server = new swoole_websocket_server("0.0.0.0", 9502); D2 Z, s8 v4 F9 M- a0 w
0 z- T" Z1 q* ^' e- $server->on('open', function (swoole_websocket_server $server, $request) {
$ V3 q6 O4 K8 _6 h/ A9 @5 M - 4 I9 b. O, Q; l _2 M f
- echo "新用户id:{$request->fd}加入了\n";
( I; W1 e W# M2 u3 ~( o! Q6 J - // echo "server: handshake success with fd{$request->fd}\n";
& F' g4 O. l5 P" D0 U: o5 Y6 G - });
$ G' z1 R1 f+ ?# P, C7 } - L7 x% Z, Z5 N4 B, E
- $server->on('message', function (swoole_websocket_server $server, $frame) {8 ^; L# z* e) X3 k* P2 k
- 7 T9 W- L1 e& F4 U2 {6 Z
- //循环所有数据 o% F! s) _8 s4 W7 Q# }. D
- foreach($server->connections as $fd) {
; x8 e# ? l' @% X: h; d: a( u: ] - //返回数据
. d: D9 F% j* I+ S$ q, W - $server->push($fd, $frame->data);, T3 j' q, E+ {5 Y; v
- }# k$ c9 h) x7 o. O$ ]
- # Q3 A& C P1 @4 f) [& W
- });
# q& N8 E/ L& y5 |% r5 v - # L1 d5 A2 Y `* e$ v- _, }: B0 y
- $server->on('close', function ($ser, $fd) {& g0 O9 \; M9 C1 k7 N5 w
- echo "用户id: {$fd} 退出\n";3 P6 P" W- }& Y5 Y& n4 M
- });; f! l/ T7 r( p; h5 ?
- 1 o# {/ l4 C5 z7 Z+ A- ` a
- $server->start();
复制代码
7 X8 D6 C3 r* D3 \6 v7 |4 q, v5 n$ X+ } e
0 r; r0 j6 O) P& M0 Y! ~
) {2 G% C$ w7 j3 z: J6 i
& P' \6 M0 r9 b$ L+ [1 p
& D3 d7 S0 ~8 |& P6 z, g( T
" z* s/ A% ?. r- q
6 K G" b$ N- |* d, u) V& K) s' K% g0 ?
2 t$ F; Y% m4 K- l0 t* u
( R4 s* U( g- X& Q; C# g0 v% X# I; S1 y9 L. @' h
; y0 v% ^0 K( H6 q' O# J! \ |
|