管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket
+ J* [, {3 y4 t- j3 b上代码 前端 观看页面 - <script type="text/javascript">
/ }" X' f) E2 X. B- P9 ~ ~ - var ws = new WebSocket('ws://192.168.0.150:9502');
N1 e' [! Q" U$ Z# [% K3 b - * k2 y9 X- x4 i# h% `
- ws.onopen = function() {( y. a7 Q4 b# w/ C
- console.log("连接成功");
7 d! u4 ~, _4 _2 n7 w - };4 W8 x3 N5 v9 W& N
- ws.onmessage = function(e) {( S% `8 \! G7 {9 [( u9 o+ f
- console.log(e);
g. H8 Y6 s) l* ]4 q5 n8 q
! p# I" q3 O# f# }) Z- var data = e.data;
9 \0 n$ c: t$ p4 v3 R& X/ T) A% G - document.getElementById('player').src=data;9 z% D. H6 \) r' f
- };
* S2 J; x2 W, d' l2 M y4 n; S - ws.onerror = function() {
) Y% o7 q/ a! D4 P4 V+ ]' L$ I. d3 z# v4 t - console.log("关闭连接");4 o, e, @+ Z' F# ~
- };
1 h/ p; J1 F: d5 K- Z+ t' | - </script>
复制代码录像页面
8 a0 H+ q2 B, s' a" l最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>5 ~ K! j, I3 M2 \# e0 h6 o+ ~$ D( z
) k: r3 f* [5 I: c: R3 X# f
. R3 r) }3 J" Z+ B, z$ l9 g$ d- 6 A- n/ q8 N4 A$ W/ J' ~( x0 h: V
- <script type="text/javascript" charset="utf-8">
+ f% r w( i. ^& b* E/ n9 k, I
+ n( @9 }$ a, N4 W, O$ j-
( [2 I; E/ E3 E5 J. g! } - var socket = new WebSocket('ws://192.168.0.150:9502');
7 R: M: ~2 N! ^/ Q: s0 w5 F( H1 j - //socket.send("嗨我登陆了");
; x$ m" \) R2 `+ t% X
$ w% c0 j" K& r; [- var back = document.getElementById('output');
7 h2 {3 R0 J5 R7 @ - var backcontext = back.getContext('2d');
4 }) `$ z- L4 u! l& O& M3 k. k) u - var video = document.getElementsByTagName('video')[0];
: a, t9 V2 n; t4 r, c - * b, p; \# J8 j
- var success = function(stream){! T$ I* @+ ^: k0 w7 V
- video.src = window.URL.createObjectURL(stream);
( [$ Y/ r& x4 Y - }4 M# S/ [- C9 f) v0 }
- , M" B) M5 {3 d" D4 p. }: c1 x: Z
- socket.onopen = function(){2 I4 {* T8 G$ r# x; Z
- draw();0 X: ~9 d3 k. ]/ I1 |+ |
- }
8 z: O) L; V" g( h* `4 L
& t3 X& h' @/ l! S* G$ U% S- var draw = function(){! R s/ y3 @, n
- try{
% D2 z: ?/ C% k7 }( U) w) I - backcontext.drawImage(video,0,0, back.width, back.height);
6 p+ L& l9 t+ D - }catch(e){
* q1 H# p# @4 P: z" { - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
/ c6 v5 ?) F6 O: ~* \- s# j - return setTimeout(draw, 100);: C- s4 E/ _# h8 f9 b4 _
- } else {
: T/ R1 F) D# ?9 k' c3 s9 q+ Z9 W - throw e;
& h1 w) E+ Z! K0 ~$ E - }
9 X- H* l% Y4 m/ [' z- f5 B - }
" c% S! Q2 ?6 C9 L ?+ _+ c ?9 b& m3 v - if(video.src){
2 h0 k R [5 b- c' X5 i - socket.send(back.toDataURL("image/jpeg", 0.5));7 a9 q2 ~0 M% Y4 e; }5 \
- }
0 t$ |5 @' s. P |# _% _1 h( A4 q. r - setTimeout(draw, 100);' k7 j0 ], Y! N; A# _
- }
( R3 n2 {; h9 i4 U) S' F - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
1 y* ^. d3 F9 C- d& Q - navigator.mozGetUserMedia || navigator.msGetUserMedia;0 |4 j6 `1 A' \/ ] ~
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
8 u; @3 b+ J7 S4 [! i' A& u9 r& f - </script>
复制代码- php1 |5 ]6 p/ f0 Q1 b! j2 f' f" Q: X' {
- 8 M5 w) f) j4 {% }4 X( W
- $server = new swoole_websocket_server("0.0.0.0", 9502);
3 _ P1 D; E* P4 i6 @$ M
" S: X/ N7 F1 j. n" a- $server->on('open', function (swoole_websocket_server $server, $request) {
& q' t) h) q' U - 5 l# K4 o0 u5 R
- echo "新用户id:{$request->fd}加入了\n";- x2 ^, `& n1 P* V4 W$ W
- // echo "server: handshake success with fd{$request->fd}\n";
: \& o, R) R4 x - });( l. x" }- v: J1 q5 m0 t
9 a& d* f( u, g- O, f1 l& ?- $server->on('message', function (swoole_websocket_server $server, $frame) {1 A! O5 r, C$ f0 z1 _8 [
- , r k9 m& a- P( `8 U9 z" N, a
- //循环所有数据
e T8 l6 ^( z - foreach($server->connections as $fd) {
- I/ _# r0 L L1 T' I0 h8 Y - //返回数据: ^! k& g! C' I, x0 P2 o' d8 w9 k
- $server->push($fd, $frame->data);" ?3 L2 h# @; }- | C+ I
- }% P4 a2 q% P8 c9 ^
- 8 n. K# Y. ]% b6 q+ z
- });
: m+ h, h8 g7 ? - * j7 f+ U c. }
- $server->on('close', function ($ser, $fd) {
) y! v* l6 y" V4 p; \/ |+ n - echo "用户id: {$fd} 退出\n";0 y( s7 t4 D' d" D3 Q! V
- });
6 x; g, I6 M. J3 e) @. A9 A - * w, h b' {, k& Y
- $server->start();
复制代码
* d u! @) \( p5 L# f) |3 T+ T) a9 e- y& q
! A2 V2 D! X9 j ^
; r0 Z B, N7 b8 z8 T) V8 b u! L( G, V9 |0 O. M
5 m. C6 m0 O9 \/ g; Y7 n$ l. X% J8 W, Z9 { c
$ i! b, x1 I' y6 E9 m* j: |! \
: s$ j! y S2 N. N
2 c, D: f- G8 u5 U& C0 a
" ^* a8 [8 r* J+ c4 N% x& m; p5 B3 c/ | c) r
|
|