管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket
' O) }- m3 U0 J+ [- f上代码 前端 观看页面 - <script type="text/javascript">2 @4 l3 D+ @, R3 O) X
- var ws = new WebSocket('ws://192.168.0.150:9502');
! }2 j- c6 L# o
( P+ E! A- |$ ~; D9 s$ k- ws.onopen = function() {0 u( ~9 b8 z- H: Q0 @9 v' x
- console.log("连接成功");
/ U$ V6 {# C8 B) E' O - };
4 d7 @4 f& z2 w1 {8 E; W5 u - ws.onmessage = function(e) {8 A T$ J' _9 }% d
- console.log(e);7 W* J$ K h: _0 V: [5 w
& T( v0 c, {# W' W- var data = e.data;, S! p+ L% y( h+ R- n9 g
- document.getElementById('player').src=data;
$ R7 ~# r/ O3 `5 Q5 e - };
& U$ \ x* \, H4 r* _9 J - ws.onerror = function() {
3 h1 N( t$ a: F - console.log("关闭连接");
( x; f6 i1 L. a& I4 e - };
) }1 i9 p1 I9 R( P6 b - </script>
复制代码录像页面
7 V6 ^) V6 m$ A3 Q, P8 ?3 }! C: q最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
1 b' z6 i; ^! P3 I! K4 c6 R - ! v* f! \: s0 l3 a, _
- $ o" ]; H7 \0 ?+ b7 A4 i
- 9 k2 Q4 U1 h- f& a2 e: z7 Y- S
- <script type="text/javascript" charset="utf-8">- X! B* c; \8 k2 ]0 y) w6 R
- $ U; @1 `# ~/ g
- & F" H# @9 S5 c6 a
- var socket = new WebSocket('ws://192.168.0.150:9502');
8 Y1 I& a% ?, H E - //socket.send("嗨我登陆了");
5 i, a+ [: e) Y0 G
4 g# I+ O! @$ q- var back = document.getElementById('output');! d% @4 V; j: i3 g3 J0 M; F
- var backcontext = back.getContext('2d');
' u% b* P5 Q& v D% Y$ I9 Z0 X6 A/ O - var video = document.getElementsByTagName('video')[0];
% @ p! b! {* `) F5 t# h( C- \% c -
2 a2 ]* o E$ a9 K7 U h - var success = function(stream){
& A4 C- z! h4 J/ l9 Z - video.src = window.URL.createObjectURL(stream);
. U1 R2 y5 t) L) R, N) d - }
9 b( z' N3 p0 A2 H; m$ B - 9 z) y* y* L, z" B6 h! n7 k. y/ Z
- socket.onopen = function(){% m2 I$ ^$ z9 |+ f& B
- draw();
2 ^9 t4 x* P* B2 P0 G3 [ U - }
$ Q3 k) z* F* a - ) ^$ `" w7 u, K8 I7 F. x
- var draw = function(){5 A9 |! E4 _6 f: q5 V8 X5 x- c8 r
- try{
" ]4 S t) j' @1 M2 E2 K - backcontext.drawImage(video,0,0, back.width, back.height);# }8 M1 K$ ]4 r0 F' r
- }catch(e){' p! \" Y' w7 W2 \+ t' r
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {: H8 ?2 L, Y' S- E, |: m
- return setTimeout(draw, 100);5 b \6 b t6 a7 I
- } else {
9 x+ x" j1 A4 B& H2 U - throw e;1 t' T. N2 ~. r# S" a
- }
% t! G C& ^, ?; s, c2 ? - }
$ n" t, b9 ^7 G* Q - if(video.src){& C" a8 p& G3 f
- socket.send(back.toDataURL("image/jpeg", 0.5));
( L& V2 z- [' @! j - }8 v. e7 c4 Y# A s4 `: p0 r) s [4 [
- setTimeout(draw, 100);0 p5 l% `5 `. e3 Q. l
- }2 Y8 y2 k9 G6 j3 o9 e
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
# E) ^+ P C& h4 m& S - navigator.mozGetUserMedia || navigator.msGetUserMedia;: ^, E7 Z, G9 b
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
/ w9 K: g ~5 L; H$ A - </script>
复制代码- php* i& }7 O, D! b3 n
- # C% e, K# Z- R- }$ x& Y
- $server = new swoole_websocket_server("0.0.0.0", 9502);
) ^9 J9 Q. O3 b4 I" R ?$ {; M( f - . c3 P& c' c. x0 j7 H
- $server->on('open', function (swoole_websocket_server $server, $request) {
* X8 n+ A" v8 g5 x
; N: y. I/ i/ X, t3 N% ~" D: d- echo "新用户id:{$request->fd}加入了\n";
2 m3 F6 @3 Z0 |! W- P - // echo "server: handshake success with fd{$request->fd}\n";
& ?% c$ g: I/ b; n$ Y - });5 q7 f. i' M) `! N$ [/ a" v! ]5 V
6 d% B( A/ z: q: J9 U! ?; A( \- $server->on('message', function (swoole_websocket_server $server, $frame) {
1 _9 G0 A0 ?6 P. S3 o - 5 v2 [2 k: }! r: D
- //循环所有数据1 s$ ~: I& S- i+ G4 W
- foreach($server->connections as $fd) {
; s# z8 M l* H$ M1 p. E0 W! K( k - //返回数据
2 E+ v [: Z' \1 U1 \ - $server->push($fd, $frame->data);
6 Y( M% r: T6 B3 s0 z V( P) x - }0 K8 u/ O1 A2 Z3 F# m' U
- 1 g, j- X- F0 Q% I5 K" c
- });
/ G2 L8 d8 j* _
6 B% K. X, ^: A$ Z' R7 f4 A6 K( {- $server->on('close', function ($ser, $fd) {
* m9 H: K' L4 Q k2 _& w( f - echo "用户id: {$fd} 退出\n";
2 b7 u4 j5 G6 v1 x: ^+ k - });
4 ]$ Q& K8 g3 f- _0 V% m; t
! h& ]) Q" m" \0 }) w) Z# U- $server->start();
复制代码 2 x7 P' D; K, i! ]
/ C! l+ i& K, L5 b' |- r2 S% ]2 U( B
( a4 A5 O# j( z% n2 \/ {
! M3 W! V; I' E. c) S& ~/ J
/ S" z8 Q$ r, p
0 ]) F D! ]6 p: Q
0 u9 ~+ l& O- [7 w( w# p2 V
+ P5 |% o$ K2 `" t8 @& m) Q3 ~4 Y& v" I0 N, O
, G' v8 {0 n. ^1 P% W) `5 N/ q3 B P
7 z# C+ L* u0 u1 q) N# S |
|