管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
1 m8 q3 P# S/ D) F1 K( Z上代码 前端 观看页面 - <script type="text/javascript">
8 q% @; X2 O/ h! X - var ws = new WebSocket('ws://192.168.0.150:9502');9 D0 E6 g% S: V: X
- ; @+ r/ K- I7 Y' a5 n, f
- ws.onopen = function() {2 J E6 d2 k% y1 U" t8 J! @
- console.log("连接成功");! z2 F* t( d+ T& ~. u
- };
& M3 d6 l* S3 K - ws.onmessage = function(e) {" b! l4 j! C+ i" a8 _
- console.log(e);3 O, e" ~3 P) R" S9 S1 ^
* [7 M3 {9 r" Y" g5 S4 V$ Z$ z) }- var data = e.data;
" }# g- h8 Y0 f8 ]2 j - document.getElementById('player').src=data;- A' z, m1 ~6 Q
- };5 K) M# t) Q- M+ l: y* o
- ws.onerror = function() {9 g5 k0 {# \' Z6 G
- console.log("关闭连接");+ W w' k R; o6 T9 D# m
- };
$ t$ b) p! z& ` l/ R a, n - </script>
复制代码录像页面
3 d! r0 B0 C- Z最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>4 E) L: z2 j! |" W* v. B1 \
- 6 g1 h3 d& ^7 j. c, y
- 6 H" x0 D% l8 F0 v+ B$ G
1 H, f! Q0 f3 @5 c$ U5 I& ^- <script type="text/javascript" charset="utf-8">. a% d2 z( ]% Z0 H* C1 c( y$ y: ?
- - ~1 }/ p" l1 P' ~" @8 H# @/ b
- + F3 ?8 A( {1 i3 n6 z1 m
- var socket = new WebSocket('ws://192.168.0.150:9502');2 D0 w/ B+ Y! V" a" q
- //socket.send("嗨我登陆了");' D* l0 [1 B' r5 e v$ A/ s
- & w7 L- f, {: P' _: |. r0 @
- var back = document.getElementById('output');! Z" y0 M5 V) a6 F
- var backcontext = back.getContext('2d');
; k/ A1 N" Q* U3 r - var video = document.getElementsByTagName('video')[0];. F" V* h, r _, V
- 0 Q1 G9 T: p( J
- var success = function(stream){
( G( t5 H* p2 I8 N* g2 w - video.src = window.URL.createObjectURL(stream);
5 v! e3 o0 F, G# U( R" g$ g - }
, x# j' b+ u% V$ H ^7 s+ Y - 8 E+ ^3 S0 X2 X
- socket.onopen = function(){5 A+ _# ~$ z. g+ |8 o# X
- draw();
. z0 \: d. O! X6 {5 `7 N% Y - }6 j3 K, b! m- c+ \; O
+ b: ^ D/ l* j! f- @5 }5 @- var draw = function(){
5 P5 ~' N0 m$ X$ I7 V - try{6 E5 [' D/ Y6 l6 f, R& a) \
- backcontext.drawImage(video,0,0, back.width, back.height);/ M. N4 l) G2 z7 b2 s; [/ b4 W0 }
- }catch(e){
* s' R `' ^5 I& I - if (e.name == "NS_ERROR_NOT_AVAILABLE") {" f/ {( V3 r& C
- return setTimeout(draw, 100);
# _, t& _# a* I4 Q - } else {
/ d( k' z% r+ `4 J2 a W6 f - throw e;
5 h: w, ~- G g u: t ~* s - }% h2 A8 p; J1 q* ?& J q! C
- }
, {- B+ Z7 I) O5 p- {. V" l9 @4 S - if(video.src){
6 {. d* `( M1 d" f; S; k - socket.send(back.toDataURL("image/jpeg", 0.5));% ^5 a2 [. ?2 i3 v% c
- }
2 y. C8 E5 J3 m% h0 ^7 g: h - setTimeout(draw, 100);$ N5 R! V6 a( P) b& w' h
- }
8 k z$ z% M6 f c1 r/ C$ e6 b2 ^ - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||; ~4 H* t; v F4 j% z/ g0 b+ r
- navigator.mozGetUserMedia || navigator.msGetUserMedia;+ F ^) x4 U, H+ F9 t9 \5 n) t: e
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
+ U. y0 P- `) E! g - </script>
复制代码- php
2 _& X e- n6 p- y! l
5 n, S" k( S) y- $server = new swoole_websocket_server("0.0.0.0", 9502);
% D0 d* ^7 @- c$ s. S0 O/ Z+ _ - 0 X4 z# h0 p: d
- $server->on('open', function (swoole_websocket_server $server, $request) {9 A/ I+ {( c( n1 f2 R6 R6 l
1 [1 X. O6 v8 y. v- echo "新用户id:{$request->fd}加入了\n";
# Q S5 }3 l. G% A - // echo "server: handshake success with fd{$request->fd}\n";8 b8 z: I0 C8 @; r) L2 L7 ^2 O
- });& O. @# V& A# G E9 w$ q
- 6 N2 Q0 X, t5 ?: Y; q
- $server->on('message', function (swoole_websocket_server $server, $frame) {
& o2 y# W$ w" h3 v9 l; {6 c) ] - n# ^- v N' G" Y, W
- //循环所有数据, }2 i( ~ z6 |# h) Q! J
- foreach($server->connections as $fd) {! [; ~. s m: ^% G4 M
- //返回数据8 l2 d, @! E% v+ `
- $server->push($fd, $frame->data);1 }9 O) X A- Y! e
- }8 [& ]9 }4 i# b' l5 g: V
7 f; G6 y% W' \: ?1 Q- });
2 X3 [# w" t0 P& ?/ b! F6 X - 5 w1 K, e) j' ~' o8 X, I
- $server->on('close', function ($ser, $fd) {3 x2 [9 s, r& T6 b
- echo "用户id: {$fd} 退出\n";, O: _! Y( [' `6 Z
- });
# l6 f) G& v0 n1 K" `0 R& N - 7 f! J" p& t$ {4 ]) G% }
- $server->start();
复制代码
, e' K7 ]7 i1 `- f9 X8 H' D5 M- J" v- P2 z8 e; I
6 Z' [; E6 k& S, ?- n
$ e- h8 |) J7 h$ E, S5 n8 q
# W5 J p0 p4 X: Z5 n) C' p# U
' Z% i: S% I8 i3 J3 s+ }0 R# o; L7 S* Z
% a! k# c. b k8 z; t" d4 A" F' Q- T
/ T4 l6 H+ b% l! n- ]: t$ C: q. I! Y2 m, g
% M: r* k) `4 R6 ]8 M) c5 O5 L; `
; f6 Z# U( h& A* v0 v
|
|