管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
! T# P2 X$ }& q( @! E5 y: j( a6 C- e上代码 前端 观看页面 - <script type="text/javascript">
. d* ^7 T( A8 P! W& b - var ws = new WebSocket('ws://192.168.0.150:9502');
2 m0 F) G8 w- \/ J - 1 N# m) S8 D2 b0 ]
- ws.onopen = function() {* t4 W4 \8 q, k+ U6 z
- console.log("连接成功");
) I6 C1 Y" X" [ - };
' m, x4 W, g( N; l - ws.onmessage = function(e) {1 O" v+ w) K( k( o
- console.log(e);
+ k/ s1 V* o7 ?/ r - # g, X8 b& W) ]% o2 m5 f' |
- var data = e.data;
, P& |, J# j3 P' `8 l - document.getElementById('player').src=data;, b; H) C, Y. P! Y7 w
- };
$ f/ F# c+ t" S% U+ I - ws.onerror = function() {
, m& `3 m2 c1 G2 e - console.log("关闭连接");2 i7 w! B; F8 [1 q
- };
" i0 W4 W: G# W* g9 A - </script>
复制代码录像页面 9 H0 z" k( T: |& X/ l
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
: @ F3 c/ l8 T4 D+ V$ u
6 Z7 ~ n6 g8 I3 X
4 J; v! R" H0 K. Y3 X$ V3 @
% \" I! E1 i0 _6 e0 V8 }0 W8 E- <script type="text/javascript" charset="utf-8">2 Z* z/ R8 G3 a7 F% p3 m$ Y
0 p3 r0 d- I5 i& _- ! S' J: g4 X1 Y( Q
- var socket = new WebSocket('ws://192.168.0.150:9502');
, X# b7 B3 N* J4 L2 A4 Y2 m5 D - //socket.send("嗨我登陆了");; p! D7 \( j0 I( s v6 @7 ^ P
- n! [* ?0 e- Z+ ]! a* P1 O- var back = document.getElementById('output');
/ Q1 g9 ^2 c! h6 C - var backcontext = back.getContext('2d');
) x" b2 p. c* S' p8 m+ O" ] - var video = document.getElementsByTagName('video')[0];
$ J, L) [6 j( p4 S3 O' B J2 @6 N - 0 R1 d) Q0 m' k& k
- var success = function(stream){) @# I% y5 L& B; Y" A( u+ Y) `
- video.src = window.URL.createObjectURL(stream);
8 W/ P( o8 D0 x8 P2 I - }; \% H( {& `8 a3 V; `
- ' F, @$ P# h9 R7 r7 v3 z
- socket.onopen = function(){
. w. `9 C: ?- o. p4 C- Z- S - draw();' H4 V* l9 T( l1 h4 |! d+ u% \. ? [
- }
4 P- u/ y; U, h3 e2 L - ) x0 X4 O3 N# T; L
- var draw = function(){3 s; d# ?4 m* [9 g/ k& ~
- try{/ l- U5 i' }$ q2 g' \" u
- backcontext.drawImage(video,0,0, back.width, back.height);. i) m8 E3 k' p1 \9 i. \1 C ], o5 ?7 d
- }catch(e){
9 `$ R! n/ |* t! n* F - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
3 n( G, S: y5 Y+ C - return setTimeout(draw, 100);0 a( _0 j! n+ S0 r2 ]* L9 s
- } else {
$ f4 W. o% q7 m9 T - throw e;
# o" u1 M |" S0 I0 h - }5 N( K& B! u( q5 r
- }
8 M) q7 c1 [0 N, Z9 l; w - if(video.src){
' g' {, m: E; ^6 g* V# W - socket.send(back.toDataURL("image/jpeg", 0.5));; Z3 O0 V! B7 F
- }3 q# C. K6 |: v, Q: t( C
- setTimeout(draw, 100);
7 P7 r" S, m4 Q) ?# z: H - }0 L# p: v; P% E/ A- e1 F
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
- @! W( W1 a w! P - navigator.mozGetUserMedia || navigator.msGetUserMedia;* S- D k0 g4 Z$ D* c4 H' Q
- navigator.getUserMedia({video:true, audio:false}, success, console.log);) y; s# z9 ]; e9 D* h) X
- </script>
复制代码- php
# `+ I$ {$ g) e7 o - ; `& Z5 `( Q7 F+ W2 d! f- }
- $server = new swoole_websocket_server("0.0.0.0", 9502);
* D. B7 a/ y ~4 ]# G
/ }9 c* c% B8 E( y% ~$ G* r- $server->on('open', function (swoole_websocket_server $server, $request) {( m' t. F: h( V
- - w% _& d) ~5 b/ K) L
- echo "新用户id:{$request->fd}加入了\n";" ?% j O( W6 p4 s2 S6 D4 [* h; l5 U
- // echo "server: handshake success with fd{$request->fd}\n";
, N5 q, V6 B0 ]3 f* |4 h8 E - });
- I1 X, ?9 _* Q) P* T, e. P
+ D$ i4 Y0 n0 v- $server->on('message', function (swoole_websocket_server $server, $frame) {% ~ p7 f' a- a. [
% n; v0 f2 y2 G8 Q; L# g- //循环所有数据
! b2 f- c9 t% u1 u - foreach($server->connections as $fd) {
" D) v1 \$ U9 C - //返回数据, g! l' u' I+ w7 ~8 F
- $server->push($fd, $frame->data);% T' t3 _0 _% u* W3 W( d! i+ o
- }$ |+ X2 m% l6 Q0 N! ~# U* C
3 O! [7 ?0 W# x4 e1 S! A5 U- });
! C+ {; V2 D7 T6 e+ o3 ]
; t* z2 A4 _% l1 f- $server->on('close', function ($ser, $fd) {' I) ?+ _ l; G* {% K) T
- echo "用户id: {$fd} 退出\n";
- D. N$ M& P3 {) h - });' O- t4 q, k$ A# W# q. S2 |" P
- 5 y3 ~; l3 e9 `0 B, i3 ?3 {# K
- $server->start();
复制代码 0 j& W+ Z/ i4 U$ b
X# ^7 E% R* u! V p; _2 Z G
, _" t, \+ X2 x
5 C& c: v* H1 I" Z5 ~7 w- e9 r+ y) A
5 M% X6 {* w* E; {1 h5 H5 h5 c
, H! x, V7 Y5 ~; w9 J1 V; h2 {6 {6 j; ^! ]" b
* l7 ?; ~+ ?. `' n% `" g1 q& K& K' `- ?1 l/ P V. M: S
- b& E, t# H2 M$ O/ C U$ M' q" `, r3 m
" a' m5 G& y7 N" E! j$ r" o
|
|