管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
& t6 L$ I+ i0 J7 L上代码 前端 观看页面 - <script type="text/javascript">
- m8 s; {4 @, s* I* t* d - var ws = new WebSocket('ws://192.168.0.150:9502');% h8 d& z$ m, E& M
- 8 H; q; F9 N& F+ l/ B
- ws.onopen = function() {8 w- p: f$ E0 h5 |# B" ?( o# E
- console.log("连接成功");
1 M. I* U$ H7 ^: f" M - };% d. X: S& e2 v
- ws.onmessage = function(e) {- [9 t L% o6 I9 p( Z/ S
- console.log(e);; G% r4 f$ g- E& [" Y; g
% |2 j9 j" W) ~0 ?- var data = e.data;- H3 r: Q' q- I5 j
- document.getElementById('player').src=data;
$ D% t9 a, b* S$ s% L- h3 Q - };
5 k4 j' j& e7 R& S - ws.onerror = function() {
1 ~2 L. O5 f" x3 N* f - console.log("关闭连接");
) O C0 F5 o% @+ a6 a - };
/ k0 p4 ~ o' K: D9 } - </script>
复制代码录像页面
' A" A$ y" I% H9 n# J+ V9 u最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
. X' `4 c- @+ N _ - 3 u. `+ L& t' ]. x5 z- e9 C& |1 ]( L4 s
" G1 w) H* r4 r) }& N! O+ V
& m) q) L. w- K2 h, e2 ]- <script type="text/javascript" charset="utf-8">6 |" Y" J( z3 Q" ]* P# s. R
0 v1 E0 n5 E; Z& O" c-
: u& u+ h: A* ~- J3 n+ b& Y; v - var socket = new WebSocket('ws://192.168.0.150:9502');, N4 d8 K' y8 R+ _( q) @: }- w
- //socket.send("嗨我登陆了");
/ x" W; P8 j* s# T
( l$ H( v7 \2 |- var back = document.getElementById('output');) C/ B. E) L \. S; b. i9 z: }
- var backcontext = back.getContext('2d');
( N; O5 M2 K- g: Q - var video = document.getElementsByTagName('video')[0];3 D' E# o6 W* Z" G: {' `# i0 [
- 7 H# J6 R! c3 r, e1 k
- var success = function(stream){9 n0 `3 M! V* ~; M$ O
- video.src = window.URL.createObjectURL(stream);
+ r4 i: x4 t4 e3 N. E( t/ c# b - }
* H% z5 P" b5 t E5 _
% R1 L1 b* v1 f( {% f- socket.onopen = function(){
2 B. G1 o" M3 Y( v - draw();4 g9 [% q3 W0 H! o. y
- }* O, G: r- @% x# ^# g/ R4 o8 i) c4 o
- . G; `5 _( I- W
- var draw = function(){
( [$ I, `: B; F: ^/ P' E/ p - try{
0 o* D3 W8 y5 G9 g. f) ~ - backcontext.drawImage(video,0,0, back.width, back.height);
. A. z' T* i: E/ @/ [! e - }catch(e){% q1 A7 K* O! l( `
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
# l! v0 V# h, U. |, h% l - return setTimeout(draw, 100);) y% f! ]! T' h" h8 Y# \4 Y
- } else {
8 o+ ?/ ]$ A7 C9 p - throw e;( I5 o. `2 f: {7 p
- }
$ K) Y0 P8 K; ?9 o6 K - }! Y& A9 y( I# G* l
- if(video.src){
6 G) F) }' T4 H$ F% V, @8 d - socket.send(back.toDataURL("image/jpeg", 0.5));
, f+ ~7 V4 ]* [ _0 P7 _0 W4 i - }) }7 n% Y1 a7 _6 c u; X
- setTimeout(draw, 100);& z# B4 F' s$ y3 v* E
- }
8 y& B q5 S6 T - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||) d8 k- W, m, R' M
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
5 Q/ y H [9 ]: V' z - navigator.getUserMedia({video:true, audio:false}, success, console.log);
9 w. A# Y' M7 u - </script>
复制代码- php( [& g1 t- S2 Y- T1 y y
- % f: i# E; y* a5 p h: s
- $server = new swoole_websocket_server("0.0.0.0", 9502);
8 U n" h% n) S+ i" C2 L6 `0 L5 r - 0 I9 A# n& K* H) K4 L; ~( A
- $server->on('open', function (swoole_websocket_server $server, $request) {! Q! k! ?+ f5 Q7 L5 t# s6 N' j. C
( }, @6 [9 h0 K& A% i% w J- echo "新用户id:{$request->fd}加入了\n";
# H8 W% s* g* m9 v3 N& u - // echo "server: handshake success with fd{$request->fd}\n";, F1 E3 ^$ e# m2 G4 t! g
- });/ ^' G( A2 N& f
- 7 ~3 ^! I( z2 ]
- $server->on('message', function (swoole_websocket_server $server, $frame) {3 P; R& g0 O8 W/ \
$ P4 _8 ^- O" f- //循环所有数据2 ^: w1 a7 e5 i& ]( `' V7 Y
- foreach($server->connections as $fd) {: ], ~8 a" X* a& I
- //返回数据
, T% ]% w3 S0 ?* X, y/ v' q2 i" x - $server->push($fd, $frame->data);
3 S( j5 W: L) e - }
# y/ S2 T( [1 `. t' ~ - + x5 H3 F* v! p3 s1 N, I
- });, X: Y- z0 v5 |& V$ d
- 2 W% t& z* a" I- ^
- $server->on('close', function ($ser, $fd) {& P6 o# z( \% O$ ^$ {
- echo "用户id: {$fd} 退出\n";
9 H0 [& X; v! H8 {1 {; O* n - });# H; i7 W6 M& E. d, c( s& S0 `
. I- U6 F- S. p! b7 f$ U4 M- $server->start();
复制代码 * k: G4 a" X/ ?1 L& l
7 h3 y4 P( G6 d) K8 ], _% N4 M. o: d- C. {, ^5 y C( D$ r
) L5 _+ o) d3 H# | v- U
! l h7 |3 p2 T; F9 r# H3 l
* K" w/ |! }. H/ b
0 K# [( b# a, l$ V, a" a; Z
& o. h5 g! E- l3 S6 a3 v
6 K) l; E4 A9 U# E6 W' k$ m0 B1 K; V4 N
; n7 N1 i" i; ? p/ b" o J1 n
0 c$ e4 u, H0 S
|
|