管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket' R) Z/ T/ N' `* \8 O9 k
上代码 前端 观看页面 - <script type="text/javascript">0 O2 ]2 w( r: X: i' D
- var ws = new WebSocket('ws://192.168.0.150:9502');
1 z3 }4 l! Z. P+ z9 \
4 R& y+ s# B* D' b! a- ws.onopen = function() {
, y3 Y$ W: U% i" w0 o! {5 P - console.log("连接成功");) d1 g+ }2 ?2 j! G( K9 ^
- };
: _ A: g% U; n7 n1 t% o - ws.onmessage = function(e) {
1 z2 f) \- w- S, v# E2 } - console.log(e);, K) m# \" J" ^+ T o
, d, g' r' M/ ?2 n& h- H- var data = e.data;0 a+ t/ m" |! r5 t- g3 B
- document.getElementById('player').src=data;
) X) ~7 ~* L( X- |/ L* ?+ e) ` - };4 I8 g c8 z5 w. d, v) ~2 o) B) c) p4 c
- ws.onerror = function() {0 r% C: J% D4 n6 w5 c9 X4 Y
- console.log("关闭连接");
9 h" l, X" l y" B1 Q - };3 j5 A) c2 u5 w) s4 o
- </script>
复制代码录像页面
9 W1 K% l$ H5 {最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>7 M, H- T8 q+ z/ k- k
5 X6 v6 q" Z( T% g- M* V3 B1 X2 W& ]1 l- j; p J
2 R" E1 s) D$ ?/ {2 H3 N `# t- <script type="text/javascript" charset="utf-8">9 N# s+ z+ M. p
- 3 V9 V3 P* {- h, n! r& S6 N) k
-
7 v. b" H3 p+ Z- R! A - var socket = new WebSocket('ws://192.168.0.150:9502');' L% s" h4 E4 O. f
- //socket.send("嗨我登陆了");: o H7 Y5 ~) O! t2 G# h) U
- % |4 P/ m) v7 g0 J5 G4 `; Y/ ^
- var back = document.getElementById('output');: f" W7 M$ K* J! t! G
- var backcontext = back.getContext('2d');' p1 ?5 [" G: H" R* N
- var video = document.getElementsByTagName('video')[0];
2 D2 V2 F! }8 Q0 w1 I - ) Q1 _/ o- d& \" r
- var success = function(stream){
7 d% i, V b( l: _9 k/ i - video.src = window.URL.createObjectURL(stream);
o: J) o# h% t, v( |& R" b4 v9 F - }
' _* o B$ h: J- ^+ D& y6 l - & G& E" Z( Q' J' N o$ N9 V/ F) K
- socket.onopen = function(){
7 l0 [1 K, i* ^ - draw();$ S* i0 S- K2 u, k, L' K/ f. d4 Z: C
- }% ?1 G- g+ s! ]2 }
- % S6 ^, ?) m% G9 B( Z: Q1 {
- var draw = function(){/ F, N' D. m+ E4 l
- try{' Y* \# [% ~+ e$ G ?7 Q3 S
- backcontext.drawImage(video,0,0, back.width, back.height);
) o" a- w- ?! ]6 f: b. z - }catch(e){! e8 z0 H/ _4 ]" V9 G; j
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {/ o9 D& y& K: E h6 o
- return setTimeout(draw, 100);3 M/ X$ U) o# N# z4 G! g7 V% y0 b
- } else {5 [* z$ ~4 q. D+ X
- throw e;
7 j4 K! R8 d5 [9 n3 ?0 r. Z - }' o" v5 l- @, p$ d) x- Z
- }
: u9 X- L( P8 G - if(video.src){3 i. g7 j( O; _9 n/ H% a0 @; l2 T
- socket.send(back.toDataURL("image/jpeg", 0.5));
q3 e* A# g" o/ B6 c/ g - }
! P1 I0 ?5 J* p9 ~# m3 a+ b. f - setTimeout(draw, 100);0 a% b; F5 D2 R+ D3 X$ o. f
- }
; l2 ^* I$ ~' [& [) i6 O( ?6 q - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
+ k3 K! n1 e. e/ S+ y' u - navigator.mozGetUserMedia || navigator.msGetUserMedia;
+ N# V" q7 q# F$ H* I2 p4 T - navigator.getUserMedia({video:true, audio:false}, success, console.log);9 a. j. v& ]1 \) b
- </script>
复制代码- php2 S9 ^9 |- K( Z- s5 j. F
2 ] h1 t7 D0 |1 o: B# k- $server = new swoole_websocket_server("0.0.0.0", 9502);3 T" f- G) r% h5 b9 ?
- ) v+ E/ H1 u$ m7 A, P4 y
- $server->on('open', function (swoole_websocket_server $server, $request) {+ u+ Z0 o1 K. K4 e# a
- % I q6 g& l2 o. A
- echo "新用户id:{$request->fd}加入了\n";
# q/ Y6 E1 r4 x7 T - // echo "server: handshake success with fd{$request->fd}\n";0 G# J# e: ]2 j+ F" k' E2 Q
- });
" Y: a3 p$ {8 B0 p) Z - 8 V# H1 v- p# F( M/ ~
- $server->on('message', function (swoole_websocket_server $server, $frame) {# D( G& x# B' }$ _: I
1 n0 f& ~6 T6 _5 S& S8 n* ]- //循环所有数据
. r0 m6 _1 K- V- a+ d - foreach($server->connections as $fd) {
* m4 K% V: ] o+ o) `3 W - //返回数据/ Z4 E9 e, [: O* b
- $server->push($fd, $frame->data);/ I# ~. N+ d! ~+ k- C- ?. T4 y
- }
$ ] }' m, w$ J h* A8 O
P7 U' x# l/ ]# n- });
/ @, H2 v# }" K N) Y: P5 F3 ^% L - 3 P4 Y" f) \) N5 s9 X9 K7 q& O( [
- $server->on('close', function ($ser, $fd) {: {# i8 J& |0 H
- echo "用户id: {$fd} 退出\n";
5 D ~. `0 U# T/ w, ] - });
+ z5 I+ D2 z/ P0 o; ]9 L7 \ - 2 Z- [" }; O+ C, Y- D% C
- $server->start();
复制代码 " ~' ^- C9 N: D' A
" t( k% q# H, X$ x* _7 Z; V j4 r
& K5 s: P* i- T& W, ?$ {2 @
, l& K4 y. s1 |! e0 P. H
. V# V/ I9 [2 S& U* O7 n" {: I. c
; m2 J' j% L4 }+ r" v
4 u& L9 [# `( n
7 N+ H, K; }/ A% x6 w( b& R* a) J, S% K8 H; x
1 f- W J! |% o5 U1 e4 p8 Q
- u: v1 l. b2 T. H9 M" A |
|