管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
: a& C# _1 W5 Z. r$ ~上代码 前端 观看页面 - <script type="text/javascript">
0 I5 @# r0 R# m& p+ d - var ws = new WebSocket('ws://192.168.0.150:9502');+ s3 ?3 M/ H [" ?! p
- b5 _ [$ l# t- q5 u1 t- ws.onopen = function() {
+ f* C+ @, H1 o; H9 O5 _ - console.log("连接成功");
7 F" `; u8 r& V2 a% A0 M. v; y - };
2 U. n/ x) t6 w# i" i - ws.onmessage = function(e) {
3 [% Y; s f/ `$ i - console.log(e);, ?- m) R2 d: A* |
6 P$ @; Z. f5 D! s; t8 h- var data = e.data;
! ?% f S9 A- _, ?, `. M - document.getElementById('player').src=data;
# D; U+ h# e# X7 z, ~! K - };7 f* P8 H5 _2 o+ P4 F
- ws.onerror = function() { J+ s: M' Q+ R! m" n
- console.log("关闭连接");
, }' [2 y( n" t! m- A - };$ C; x# D6 V. J$ u
- </script>
复制代码录像页面 - F. |; ^/ Z9 x# H) r5 P
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
: }6 ~* f1 J% |3 n - 4 v# k, J& K$ ?6 F8 x6 x' \
- : x* r7 E6 ?. D+ J6 U# z
- + {* r8 |3 R! {" ?* C+ s' t" p: r
- <script type="text/javascript" charset="utf-8">7 k$ [9 h' M5 U: {2 N3 T
- 5 X! x3 h1 e% c" z* W! e
-
5 l2 J- t) X1 @( {( {) `" T% \ - var socket = new WebSocket('ws://192.168.0.150:9502');' i, u6 @( ~0 k! j
- //socket.send("嗨我登陆了"); w. F( _# c' H1 H3 `3 ?" V5 k6 `
- 0 ?6 K; G8 e2 M4 ~0 \# r2 y
- var back = document.getElementById('output');& s/ d2 f& n; D" |! q2 w
- var backcontext = back.getContext('2d');
$ X: f! B8 q( W& f - var video = document.getElementsByTagName('video')[0];' q9 h7 o4 D; }; O' Y) N& ]# @
- 0 C, s) n. E: K* i c& O! D/ G/ r4 x
- var success = function(stream){ i& d; d# X4 q5 p8 U2 o* t
- video.src = window.URL.createObjectURL(stream);6 |, B# P) O% U+ q4 B
- }
" m; J+ @$ ^; h% w6 }5 O' Y
* _! T% W3 f4 k& J# B/ s- socket.onopen = function(){
! v; R6 _" q$ ^, @" F" Q" }5 D - draw();) T5 u4 V+ R" ?2 k
- }& ?# V* Q# O/ K
9 A0 n( u ~7 d3 K7 N& _- var draw = function(){
+ ^* D9 o5 K/ p: R; E5 { - try{* D. K4 w ^6 c
- backcontext.drawImage(video,0,0, back.width, back.height);
6 X$ L$ H0 v: s) x1 }$ S# a - }catch(e){
/ t8 W( p3 p9 Z4 \2 k0 e+ s# | - if (e.name == "NS_ERROR_NOT_AVAILABLE") {' D& w: o4 C8 }5 f
- return setTimeout(draw, 100);
- A6 I; p" o& }, \2 D) [# c - } else {
" M& C9 Z* J3 {( \) n9 e _ - throw e; a+ b( V+ y# c$ A: x, G% ~& w7 y1 F: P
- }7 X, |- V3 q4 M- r8 E. k) @
- }
4 b! {0 u o" q e5 {% @ - if(video.src){+ t; X2 z9 `" ~% m/ k- v" B
- socket.send(back.toDataURL("image/jpeg", 0.5));
) X3 ~" E+ Q; R* s& f% i& G& n - }
2 N" K" t4 R; f6 D1 z - setTimeout(draw, 100);$ ^- i" @% s( n( n
- }5 z7 y7 F; a$ h- m! Z6 w' N# U
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||4 k9 j# m0 y& Y# `% m
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
; K1 t' ~& a: D# z) B - navigator.getUserMedia({video:true, audio:false}, success, console.log);
! n; R" p7 s& }. l. z1 b* v- X9 s* P - </script>
复制代码- php' A h7 }, w# P$ M- r
2 H7 w. ?4 c0 F9 Z. c& p2 w7 I- $server = new swoole_websocket_server("0.0.0.0", 9502);) r T. V# p/ }3 W2 Q
- ' \* J) I' y% ]+ R. {0 A
- $server->on('open', function (swoole_websocket_server $server, $request) {9 V t J0 `, A
- 2 h `. Z' T U9 R4 r3 Z; \: b
- echo "新用户id:{$request->fd}加入了\n";
* ~" ~0 u+ D/ o - // echo "server: handshake success with fd{$request->fd}\n";
: ]0 U& b# X. p. E - });5 h! U6 T# Y$ o8 ]& J; j; B
) M1 j) c6 J( D3 E& Y; c ?$ }- $server->on('message', function (swoole_websocket_server $server, $frame) {3 c a, z. W1 y# V3 C
) o; j/ p/ a1 Y P0 }4 i7 L% ~- //循环所有数据
W: C7 T L Q7 X - foreach($server->connections as $fd) {8 y) ]0 E# a! X1 T
- //返回数据( j$ C& O, g0 R8 E
- $server->push($fd, $frame->data);* r2 t8 m ^4 x; ~
- }6 x/ |( A; X4 u: ?7 I& Z/ P) O9 {
+ M0 D5 ?2 Z8 a) k) c! [8 \- });$ b1 i% }8 u' s8 }4 J0 n; ^
- ; P) U/ k/ q ]
- $server->on('close', function ($ser, $fd) {
' P6 r+ c2 v# @+ G0 c3 K - echo "用户id: {$fd} 退出\n";& ^) s$ V- W2 X3 ?' ?
- });
# n1 d! R& A! g5 v* v h - 6 Z+ Q3 X* k; x" q3 [& J
- $server->start();
复制代码 + R1 k) u5 e0 \$ |+ D" B+ ~
0 H" H3 f9 W- B" H: d% [
w/ K: R( l6 k
& x; ^& s) ^) m, \- P& I# g' B
. ^6 n) T! X6 j7 c' p6 z+ Y% I% l6 O7 |+ y) n) v
9 Z' A7 u/ A7 }$ _( ]: \+ f. E8 {: f: Q* O
4 l* A' p( `9 E" I$ h6 A2 a8 N0 o& F7 \$ [1 U" {9 f8 d9 A
; g/ m) r* ~* \5 r/ M; M [8 w# S
/ ^* j" q8 T. B, v$ ` |
|