管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
7 s5 w; H- K6 T' w' a- u6 f& U上代码 前端 观看页面 - <script type="text/javascript">
Q2 r+ r$ y: d7 U0 _8 c! f - var ws = new WebSocket('ws://192.168.0.150:9502');
8 ? ` I- v6 B+ ~3 U
/ E1 Z+ O6 H' N! H2 A5 R- q- ws.onopen = function() {
) Y. _( [! d) j# k8 U3 } Y8 ?/ b- X! g - console.log("连接成功");9 U! x. \7 G, j6 U. @& m: X8 |/ R- o
- };
& ]$ @$ W$ Y- E' \: B( ~ - ws.onmessage = function(e) {
# K8 _* c7 m. r. V7 f2 N2 K8 m. W - console.log(e);* D& w- U, ]( y4 L9 k `
5 O; Y$ y0 e7 H# F2 p" w& i7 X- var data = e.data;/ m6 T; v* D7 u& N0 h
- document.getElementById('player').src=data;
7 _9 m0 h# V& R) f& x7 |8 w - };
2 ]/ v3 T6 f7 O: E - ws.onerror = function() {. F K3 m% u! K! C: n4 C( Q+ Q4 I
- console.log("关闭连接");& y: ~4 P* ?8 w6 B& R7 C4 Y
- };9 ~6 Q+ H# y% d. L
- </script>
复制代码录像页面 ( y- u: H. z' v: E g
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>( B: G& m7 w' {" _
. O, _( q o; ~2 m
* y2 A' D- j. f0 _# i0 \
3 Q" O0 E$ F. C) o' h0 D: Z- <script type="text/javascript" charset="utf-8">. c& M$ E1 ]1 P# F6 G4 P& _ g, V
; a! `4 g4 H" v- ! z( M' q: ?$ z
- var socket = new WebSocket('ws://192.168.0.150:9502');9 F4 @ v Q* F$ D9 I; T/ ?
- //socket.send("嗨我登陆了");
# u5 y) I( S. l9 K; I9 s! b
! n' C2 i# a1 f+ Z+ x- i- var back = document.getElementById('output');
& y/ Q" |* Y' o - var backcontext = back.getContext('2d');
$ ~0 W# ^, x% v2 Q( b - var video = document.getElementsByTagName('video')[0];
9 W3 C- j u' B8 i; p0 t -
4 e2 } Z3 D4 [ - var success = function(stream){: ~# V( F$ F: x3 M) Y$ }
- video.src = window.URL.createObjectURL(stream);
' v$ S1 r3 A+ u8 V& m - }9 N; M: f, B+ ?. }! [8 c& A
4 Y/ ?$ B+ T! G- o, ?- q0 H! a- socket.onopen = function(){9 Y/ w' C* u0 |. q/ ]
- draw();, e. q; o3 s8 }; t
- }
/ ?$ y, [; R2 j% y - $ [0 D) C# J. [
- var draw = function(){
+ r# e: s+ N7 b' I T- ^3 u1 { - try{) E: @2 `( T: J9 p ~) _
- backcontext.drawImage(video,0,0, back.width, back.height);8 n% a; @- E" X
- }catch(e){
. b1 [! ^0 l' @0 O( ^" b) b - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
* \( u/ W4 S4 [# f, q* Z1 `1 f8 b: ^ - return setTimeout(draw, 100); u; k% w. i# [1 `9 A3 C0 A
- } else {4 D5 H) d/ @, G2 ?
- throw e;
3 D9 c+ G$ b- u f - }
# E9 U; g6 r {& l4 I - }* Y7 p+ ` s8 B( K4 g% U# T Q! K5 {
- if(video.src){3 \$ `" X1 O5 Q7 L, ]; N, c
- socket.send(back.toDataURL("image/jpeg", 0.5));( ~9 ~9 V& L) `5 H3 u% s- v& q
- }% Q& Q+ q' y+ L; |
- setTimeout(draw, 100);1 T- o- I! W" M
- }4 s$ o" k7 X" U' W- D: ]
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||9 Z' R4 g5 g V+ ?
- navigator.mozGetUserMedia || navigator.msGetUserMedia;, v/ Q0 L H( v. ?8 W: J
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
2 C' J0 B+ a( ~# E/ N+ T - </script>
复制代码- php7 F j! A2 i; x; K% D" R
- 5 u2 B+ T0 Z/ o+ Q7 L* o
- $server = new swoole_websocket_server("0.0.0.0", 9502);) L/ K. q0 F2 x5 {- H
& y! }: H) P4 t; ^* x- $server->on('open', function (swoole_websocket_server $server, $request) {
8 o3 ~: ?& G1 p/ N
' i$ C1 L1 U0 `& A: d |- echo "新用户id:{$request->fd}加入了\n";
/ O; K- K! `' E+ A G# J - // echo "server: handshake success with fd{$request->fd}\n";
[0 A; D' t) C) T8 w: m - });# X* w8 G" E0 T% {. ]$ I; J
- # c/ j3 x9 E# z
- $server->on('message', function (swoole_websocket_server $server, $frame) {
: z$ v% Q ~1 I7 R/ G" R4 B! Y - ; ^1 }4 E, T) k6 l( e# j9 _
- //循环所有数据2 T! X' S" c, _' t" h7 B) d
- foreach($server->connections as $fd) {% J5 Z) f$ ]" _- P" B! P$ R* l% N
- //返回数据+ o: k; a# M' e" R
- $server->push($fd, $frame->data);
: n: b- y8 F5 E& b& F5 f g5 v - }
- a) m0 B2 R I! x6 X, P6 R* v
4 O3 c0 [, k' h9 E- });5 M" n& P: j, b! w9 x% E
2 M. M$ u) d" s0 F; X# D- $server->on('close', function ($ser, $fd) {
- M0 j" y2 n0 y9 e) @7 n - echo "用户id: {$fd} 退出\n";9 a8 t* U# b0 l2 V5 L4 F
- });! x2 N- L. [+ ]( g. Z( t; t9 K
- 1 i6 k& \3 t! A6 R
- $server->start();
复制代码 1 ^1 o/ y4 n8 M% b( Z" x
- A' p# J' C: Z' a$ V+ l
, S% z4 {# W3 q+ s2 O
" Z6 z! F! u5 @* D& j. x) h# T- V9 g0 f2 ^6 {
4 l4 |# C* X# T6 t$ [) y+ @
' V( n5 [4 y4 p) p' E7 |9 X* o+ @$ U! T/ \9 \( v
' |2 U( F- q! ?% R+ e
/ q" K8 V% s, i. J. y5 N% q- r
) V. G$ f3 x+ A7 \% {- H/ A4 j$ j0 O3 z- {) `$ i( h: g" B
|
|