管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket
- j' D, s( H; V% `/ s: \. e上代码 前端 观看页面 - <script type="text/javascript">2 @, U* R6 P. S6 g6 J/ M j
- var ws = new WebSocket('ws://192.168.0.150:9502');
* f3 c+ K4 k3 Z0 e" Q6 m" e7 x, @ - @( p0 h' {: G. [% Z
- ws.onopen = function() {0 _1 Q, ^( x& E. a
- console.log("连接成功");( k. E' B7 e: q$ W7 s3 {
- };
, {4 c6 }/ U- w M7 U" t: P - ws.onmessage = function(e) {& Z r, `$ S# p% p
- console.log(e);
9 _6 V: r4 j2 h# {5 w, E* V6 B
+ G; f2 E5 D( G1 ?- var data = e.data;
, f# @6 c5 `( n: b$ A - document.getElementById('player').src=data;
1 q7 H2 ?! H4 n9 K1 q - };9 c! C2 H9 T* i- _
- ws.onerror = function() {3 Q5 e2 U0 ]4 l1 q9 ?
- console.log("关闭连接");2 q9 z. Z6 Y$ H# I+ ^ }
- };
' M0 t; L) V" j* X6 Z - </script>
复制代码录像页面 1 _4 l: ], Y4 i
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>5 y2 W9 T( f: w$ {3 y$ S) ~6 K
! D- }6 m l2 z! d" }
+ u, @, P) Q3 ^1 h; Z2 h5 q- ; t C3 `5 c0 I$ L
- <script type="text/javascript" charset="utf-8">
7 B$ A9 Q3 ~1 E3 `: V" ] - # p$ V$ ^2 Q2 k6 t# o5 C" D
- ' _, \: u+ P! d% a2 p& K% C
- var socket = new WebSocket('ws://192.168.0.150:9502');& C) o% B2 L/ O' I0 K, M
- //socket.send("嗨我登陆了");# |" v5 U6 ^+ a. c& j5 _+ @
- ) Y" u* h# r9 c. C" i1 _
- var back = document.getElementById('output');
/ e5 O0 d9 u# j( D8 M - var backcontext = back.getContext('2d');: o2 w) z; \8 C4 Z0 z, l6 N" P5 @+ n
- var video = document.getElementsByTagName('video')[0];
, d, A# P- w0 l5 w* F- N, L -
9 Q; c' s7 L& \. Y& s - var success = function(stream){- |- Y0 G& g; J- _, E* X6 g
- video.src = window.URL.createObjectURL(stream);
/ G* y0 ?' c7 b, p9 z4 P# P - }
" }8 ~; A' E7 M8 D1 o' T i# k8 G
* b; b4 F# g( Y5 [& {- socket.onopen = function(){
/ w7 {+ u$ |$ g- o! g5 n - draw();( v- f9 ^4 A6 i+ C
- }& @" F. U" E( [+ d# s1 l
5 x/ B/ ]! Q4 N% {- var draw = function(){; H5 \0 [. `; c0 _
- try{3 u' K% N: R# x. h& o
- backcontext.drawImage(video,0,0, back.width, back.height);3 z# `( P- P' J4 B; C7 t
- }catch(e){3 B$ s/ p& {3 J* G
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
1 w$ k7 N. k9 f* u- E! U6 R7 t - return setTimeout(draw, 100);
1 \! _! q H# A3 H - } else {8 f% T4 m3 U- L: b2 ~0 A8 M! ]
- throw e;
7 g i1 q2 C* k. y) F' e9 V - }) ]! K+ N" Z( J0 R' h$ ^; o
- }
; s5 O1 I9 a" C) l - if(video.src){) G9 `' n; p" O. v
- socket.send(back.toDataURL("image/jpeg", 0.5));. z1 n- D L! @
- }
: ?. }( N1 R+ K% Z) h- E - setTimeout(draw, 100); c* y' ^$ H. F9 q. a
- }2 d$ m9 i1 f/ Q) c2 e+ B$ y" D4 r. E
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||1 r# }* P |9 ^
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
5 r% _" H8 M: N8 A# X - navigator.getUserMedia({video:true, audio:false}, success, console.log);
( z1 k' Y) K+ }/ t+ o+ L4 W. T* b - </script>
复制代码- php
6 H: [1 L2 O: B$ E
+ J4 }+ o- @$ K* i4 T9 f- $server = new swoole_websocket_server("0.0.0.0", 9502);
/ w/ R9 Y% R/ D& B - ! `; [2 D# [! r3 p! d( n. M7 A
- $server->on('open', function (swoole_websocket_server $server, $request) {
- I2 U. D- g* q! t0 { - - c' p; X0 s- z' p2 I( r
- echo "新用户id:{$request->fd}加入了\n"; M& K, \1 W) X
- // echo "server: handshake success with fd{$request->fd}\n";
8 d- f. n4 L. J7 S - });! T4 d2 I0 n1 e7 n5 |
5 Z: b& r" m! {* j. e$ ]- $server->on('message', function (swoole_websocket_server $server, $frame) {
6 l1 ]8 w% ^+ |* s/ U9 S c
* y) X, T, b- m7 a- //循环所有数据* `8 G* B3 e) a; w6 l
- foreach($server->connections as $fd) { R0 g" V2 \( V! A! w) ?
- //返回数据# L2 N. {; F6 p: h& w, A% J; F! l P
- $server->push($fd, $frame->data);
. c+ M6 P p2 N - }
0 F7 F3 K" b! [$ o
$ f+ h8 g/ @4 s8 P. U2 @- });) X% v# s3 p3 r3 c) ~8 M5 @! \
: j: ?( V7 ]3 L3 H) x5 x9 a- $server->on('close', function ($ser, $fd) {* C% @0 m1 K3 \, k3 ~2 F9 _
- echo "用户id: {$fd} 退出\n"; ~( ^6 j# x, {) U l0 _* Q7 t
- }); M) G; x8 G5 j
: W6 `' W w( B9 M* u+ v- $server->start();
复制代码 ! b* k4 S. y6 j+ M3 X b: H
( m4 D4 q+ Z: U9 X4 y- V/ U' U+ P& y2 y/ c) C1 n
# Q' S" j9 e6 v; q$ P
( }/ Z) l$ L3 z. H% ^. i+ Q$ ^
7 n z8 l. s9 l
9 m$ @% I3 w0 K. V. ^+ @
. g1 d) g- c1 ]
9 E* \% I% G6 h, m) |4 K5 Z& S4 |, ^
' a; @5 V" O0 u E" q
9 M2 h' y; D0 T. ]/ C4 O; b3 w |
|