管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket4 C1 R$ M( H! r
上代码 前端 观看页面 - <script type="text/javascript">
3 \8 j: ]# l% m9 g- I- h6 \ - var ws = new WebSocket('ws://192.168.0.150:9502');
2 }. G9 ^5 Q3 x4 H1 O5 p1 b - . M3 C$ `6 c3 D: m
- ws.onopen = function() {0 F( u F1 g% R, e; F+ h
- console.log("连接成功");
) o4 @$ J9 F0 K* ~$ l - };
& e+ o' T' H, k+ @" z* |! F - ws.onmessage = function(e) {# R: ?# {7 e0 t) t* q g
- console.log(e);
k: S9 i+ Q0 f/ V* m9 h8 A - - q0 c, s7 x. x- M
- var data = e.data;# T/ i( N* Y$ z( [ p4 m5 I
- document.getElementById('player').src=data;/ g L. E0 X+ y) d
- };5 Q$ P( O8 u/ ?! ~: m
- ws.onerror = function() {
4 y) w9 L- M& f# G/ h( \ - console.log("关闭连接");
$ B7 [8 Y' i- { - };+ M2 @1 o& A; i( J, @% o
- </script>
复制代码录像页面
1 c" L. q* {4 e$ l6 m最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
9 T+ s7 H, c7 I: r, ?7 ^( s - 3 f/ S; F4 Q! S' L1 W( \& `9 |
M4 r! L# L7 K8 Q1 b, t# J- & S, T0 k4 B& S5 A9 P l& B: X0 E
- <script type="text/javascript" charset="utf-8">: d. ^' ^: S6 }+ P% O, E. o* ]
- 8 Y3 c+ H4 i% y6 {
-
+ E; Z/ q& k, e" t/ o6 ^" g5 G1 v - var socket = new WebSocket('ws://192.168.0.150:9502');# ~1 Q; t+ i: }: P0 k
- //socket.send("嗨我登陆了");$ n) W2 D. Q7 l8 f
! S$ Q- x: M. W6 T- var back = document.getElementById('output');6 ?! |" m) |3 L8 }& @
- var backcontext = back.getContext('2d');
+ S1 O- o, Q6 ^# u( P5 r1 D - var video = document.getElementsByTagName('video')[0];
0 m0 o" [5 N* ~$ Z5 v/ y. h - |2 y7 w$ `3 {; S: g) a1 |
- var success = function(stream){2 t3 `0 M! P# F' w* [; q: R. ~
- video.src = window.URL.createObjectURL(stream);
' @& X) I' i$ \+ z" @" \ - }
J( E/ J, V" k7 q$ f' w1 j
/ u, _4 e# V& V" C- socket.onopen = function(){4 {9 f4 A* v' ^6 a! B7 T) Q
- draw();; A% F) ]. ~0 B2 G2 y2 P9 S
- }
2 y$ |: |6 N- h+ o. H: M - , ?/ v7 M* C' a+ ~
- var draw = function(){
. t' F* f) g( u: x - try{
1 Y3 d% j+ K5 K3 _. c - backcontext.drawImage(video,0,0, back.width, back.height);6 _* c; w$ H2 i, _7 H$ Z
- }catch(e){
4 {& A5 \3 P$ J) y7 I$ w) \ - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
/ S8 V+ m' a) m: [5 L9 U, @ - return setTimeout(draw, 100);
. p% h4 v* \ Q - } else {' B5 ~) h" X0 j* e+ }7 V$ S A
- throw e;
6 Y! O; q s# ?8 d6 Q - }$ ~# u1 w: g4 U$ x
- }$ K* [$ C/ s$ d- S0 T
- if(video.src){
6 m8 I0 C) A# i! C3 J( r7 G* R3 z9 U o - socket.send(back.toDataURL("image/jpeg", 0.5));1 A, D0 s1 B: V6 C; S
- }
6 j3 W) }9 H% m: u2 i0 m - setTimeout(draw, 100);4 o) z' e( _. v7 H# I: w d1 `- m
- }
, i; m5 M8 I- ? - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||9 `0 J3 v) q, b7 ]- I( Q
- navigator.mozGetUserMedia || navigator.msGetUserMedia;) S( s2 b3 ?- c+ ]6 C( y
- navigator.getUserMedia({video:true, audio:false}, success, console.log);& b+ x( S0 h% E% B+ u2 n, `' X
- </script>
复制代码- php
5 ]% H# F' E" }) w; x* v
7 j4 c0 F3 Z5 k9 a3 h- $server = new swoole_websocket_server("0.0.0.0", 9502);
2 n* u* D$ y$ z+ j4 C7 ?8 x4 p, R
! N/ S7 ^ M. C: l v- $server->on('open', function (swoole_websocket_server $server, $request) {" k# k6 m" Q% c4 ?1 q
- ]( e& ]# p, [; y- _- echo "新用户id:{$request->fd}加入了\n";% m9 t% W* T3 W4 {
- // echo "server: handshake success with fd{$request->fd}\n";
- d; c, F, V* M6 v) G1 ^ - });; o" W9 b8 S" t* e. e
/ X9 _3 E8 W# ~. L. ]1 z- $server->on('message', function (swoole_websocket_server $server, $frame) {
$ a8 F4 H3 V$ w4 J - " L d% m0 I0 ^" f
- //循环所有数据
; ]* c* E: f% N8 a1 J s, `; U - foreach($server->connections as $fd) {+ r- _$ Y9 Y- m3 t' @) Y
- //返回数据% `5 X; z* X$ f) s8 n/ i. j" X
- $server->push($fd, $frame->data);; u: {, R! n! Z
- }
3 A- S5 }+ {7 c; u) L - ' v1 ]; S# u3 ^* j* \) B0 R+ H" H9 A7 p: ]
- });
8 d- @8 ]& b- b j - , p1 ^5 L: k }0 [3 J
- $server->on('close', function ($ser, $fd) {
0 _6 a, J' R" x; u) E9 ?7 G: m - echo "用户id: {$fd} 退出\n";( a/ G) T2 q" I
- });
4 @# V4 x) N4 N/ x6 b
4 Q- R' s# e7 j7 D% t0 b% q- $server->start();
复制代码
9 u* I/ f. B9 v' b: C) S2 P( x% m& E3 I. H# u- S
; d. J. B: n7 [0 X2 B) e( `
, @- s, u: N4 ^5 J* Z
+ X" P% \" e0 B+ i
& t9 z Q' q6 c c
]" y4 w% Y5 V: ]
3 F7 I+ W o/ M8 s4 P- a
8 }0 m+ u& ]$ c$ G! ^8 w" M5 V
' ]! _! K7 d+ F: j3 j7 O U8 \" m5 V" N, D( x
) b! I, P( q* m7 v: e4 J! n( W" t3 w
|
|