管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
) q Q0 a" i- Z3 ^上代码 前端 观看页面 - <script type="text/javascript">+ V8 E# N7 N8 S+ O% ~- H
- var ws = new WebSocket('ws://192.168.0.150:9502');
4 I" k5 m* k4 @: R' L - , \/ L1 d# \; I0 q! [
- ws.onopen = function() {
/ i2 q$ X2 x, ?3 h8 E - console.log("连接成功");8 l! b& Z5 M& [" p2 D6 V
- };
; v4 c! L, J' W" H0 X. c: H - ws.onmessage = function(e) {" k8 B9 n- `7 z
- console.log(e);
* w) Y- o/ I9 O - a+ ^# Q5 |* J% t$ ?7 I
- var data = e.data;. a; M1 i( m6 y, e" f
- document.getElementById('player').src=data;* m0 }" B7 Q$ ]$ Y3 p, ~
- };
& h5 \% \! j# _/ `. W - ws.onerror = function() {# ]2 o9 [/ I/ \1 ~$ [4 h
- console.log("关闭连接");& O5 {/ n Q- k% j0 h8 b" v" i, d
- };
* o a$ D- B9 L' b. Q - </script>
复制代码录像页面
- S2 v$ w, g) Z: X最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
0 V. I6 j/ |0 i: J# M9 G* b
U* L: Q) l8 g2 c
x5 [9 s* ~0 I) D* F. c* C7 z+ w
2 N9 a" x: ~- d) w- <script type="text/javascript" charset="utf-8">$ a- n- C' i4 r) G2 ^5 E
: s' I8 P7 \; z z- * y" s y" P1 j {3 j0 E$ q
- var socket = new WebSocket('ws://192.168.0.150:9502');0 P% F+ Y% X$ H4 m# w
- //socket.send("嗨我登陆了");
" d8 w* q* ^: Q: p: g - 3 o+ r* q& I) _
- var back = document.getElementById('output');) C$ p+ Y. G! Z6 `% K3 {" Q
- var backcontext = back.getContext('2d');0 c% @7 B# s L1 D; L
- var video = document.getElementsByTagName('video')[0];' s" B0 N: F# e( h; g! V7 k6 G
-
' F9 \ K7 L$ i - var success = function(stream){& m6 q$ {% Q2 R0 \9 D
- video.src = window.URL.createObjectURL(stream);' [8 Y* f/ [8 C& m2 C
- }* D8 x6 Q1 a% v
- ; c5 u4 }1 c [
- socket.onopen = function(){) i2 l3 C% h, L$ C6 K
- draw();
! j" g t$ Y( b" h/ M - } ~$ U# I0 t% d5 V7 t9 K
- $ s; M; S" J; |2 i5 y/ f
- var draw = function(){$ c; `! [# B) e7 J# ` V! d. v
- try{
! n# }" v- B( y+ |; m - backcontext.drawImage(video,0,0, back.width, back.height);
: E, V4 |6 t6 S6 u+ W" N - }catch(e){
% w2 b$ Z' Z( K4 i& Z* f - if (e.name == "NS_ERROR_NOT_AVAILABLE") {; S- o* _2 I# \2 P( R5 a
- return setTimeout(draw, 100);
' s+ q/ @& a7 v0 b' m - } else {3 B" Y& g! z8 \; M( G7 B2 J0 z
- throw e;
* t; ^$ S5 X- l& ~+ l3 s7 h3 _ - }
7 ^/ {6 Z* o2 T' x - }
: u9 @) z6 W8 M4 U4 n' `5 Y - if(video.src){
" B( o, E' X" G* p9 u6 d Q7 U - socket.send(back.toDataURL("image/jpeg", 0.5));6 u! w) R W. V; X& S8 ^( R
- }* r! H. O/ K* V' F! ]
- setTimeout(draw, 100);! |6 F4 k4 D# C0 Y4 [5 ` d; ?
- }
' \) Z7 k) w( |) B" R- a" V - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||3 ^: x3 M: i- o( a4 ~' j$ Y
- navigator.mozGetUserMedia || navigator.msGetUserMedia;+ j2 Y5 Y1 B8 e, Y$ j3 l$ p
- navigator.getUserMedia({video:true, audio:false}, success, console.log);! |" \3 q0 g4 q8 y0 C# [
- </script>
复制代码- php& d$ x) j2 ^! @) K E
7 t/ R+ \" U: D8 f) ^5 L- $server = new swoole_websocket_server("0.0.0.0", 9502);+ y2 W+ @# r4 e1 w, Q$ u* F R
3 w5 \, K, ?0 n& E' o- $server->on('open', function (swoole_websocket_server $server, $request) {
& C8 i/ s: n" a! |; v1 {" S - ) f) K k# f b. G, A' F0 d
- echo "新用户id:{$request->fd}加入了\n";- ]! y' p# s" p. i. a
- // echo "server: handshake success with fd{$request->fd}\n";( i! U4 ?# I+ B0 q: N! q: T
- });
* `* X$ j7 C- _
: V" w! S6 _2 l+ T- $server->on('message', function (swoole_websocket_server $server, $frame) {5 P* z* K* u7 ^% M/ r- D
- ! O2 n, |: ?2 V, N
- //循环所有数据$ j+ o+ ~9 s4 ]; t1 `
- foreach($server->connections as $fd) {
9 n/ L) ~7 |' H3 j$ `" Q - //返回数据
' A; D" J4 @3 l+ O q; W+ ` - $server->push($fd, $frame->data);
; T/ ~# M0 V) f. j' o - }
* N4 j) M$ n# |0 N4 B# s% z - [0 L4 c2 Y: G; s6 g& h \
- });
9 V: I. D! V* p3 S1 ~. |, R+ }* H, p2 a
; i* H; e0 h7 r4 r) Q- $server->on('close', function ($ser, $fd) {
f* R6 O& }" `9 |5 h, V - echo "用户id: {$fd} 退出\n";
/ N/ O4 e9 T6 n* O) P, z2 [ - });
' |, K& D: q& s
/ E0 {: t) Q3 z9 f( _3 s- $server->start();
复制代码
" v$ ?5 c! V6 u. N7 h5 V+ d. h
) p8 z9 @0 w1 P" M
7 r5 D3 i- G& e
% o e0 t3 \ Z$ @+ V* W f8 o) W0 A
4 \6 G" g( g9 a
i+ Q- x- c9 b9 Z; v0 D8 p
; s8 h! I) y5 ~7 w$ Y3 A L' Z; Y, B( P; D& u
) c# p5 `, K* W8 L* d
& |+ G8 z+ j# `# ^4 e- f- J- ]
- Y" X, y1 b1 u6 a, u
|
|