管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
, J/ F7 Y3 Z+ n/ e1 U上代码 前端 观看页面 - <script type="text/javascript">* Y0 J6 i# @7 G9 _1 A
- var ws = new WebSocket('ws://192.168.0.150:9502');$ e; f% w ~, r% ?
- n: i# U, |6 Z( F% e
- ws.onopen = function() {
8 B y9 L3 d5 X+ R - console.log("连接成功");8 j1 Z" b J+ G" O1 G
- };! F1 w4 } K2 k; G' o
- ws.onmessage = function(e) {: _3 j3 Z8 Z1 p$ B
- console.log(e);! ~3 ~, `$ u- u7 @7 v" t$ R
- ' c: N/ i8 C* j$ X
- var data = e.data;$ v3 A" m# y0 [3 c8 C- G
- document.getElementById('player').src=data;. _3 s6 s- O: o8 Y4 a
- };
7 B7 t6 N" P7 W) @" n - ws.onerror = function() {
$ B7 o3 {6 E2 T! S' f- ?3 r( R6 L - console.log("关闭连接");
: `, p' T, E( Y, ^7 f; U- v - };. o* o1 b2 @7 m* O' F% d# N5 ]
- </script>
复制代码录像页面 , l+ P. q7 D0 Q+ A+ l
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
7 G" \) s7 y2 ~. M+ \) P' S! p
3 ~( O9 h, j( h4 v5 z- 0 t* D- d {$ x
/ @. v6 A* o5 v3 q- <script type="text/javascript" charset="utf-8">
( o/ ]4 f# w) x( i - - ~" D6 T& Z3 I% ?, j3 F
-
3 K9 W; F7 t6 l2 `) f - var socket = new WebSocket('ws://192.168.0.150:9502');( d( S9 L+ g5 B: G% c3 q( e
- //socket.send("嗨我登陆了");- A- Z; U7 q& l" Z
- * u* d" c3 O$ i/ A: x6 i2 ^
- var back = document.getElementById('output');# W3 D( n5 C4 D; r7 }1 N. A. |# Z
- var backcontext = back.getContext('2d');
@' k$ Z. s, p( l$ {; p - var video = document.getElementsByTagName('video')[0];
8 u6 ]0 `8 p- U- k: x6 U0 L -
( C( d6 `" a! Z5 ^ - var success = function(stream){
" W2 H. W% \: t - video.src = window.URL.createObjectURL(stream);* `1 d& W0 U& j4 L& A/ Y% U
- }
- e3 |6 {, X0 C
; w9 F& a( X3 u: ^$ d- socket.onopen = function(){8 B0 @& _/ c: e i' M, ^, t
- draw();
) m3 V( P5 ^5 N) y% r9 b - }% I5 e. I; A' D1 k6 w/ `% I
7 Y7 z2 i; f% G5 }* U0 X' c- var draw = function(){' m; \! m+ o8 S. u0 e* I
- try{$ j( i: K! ~# ]& ~8 e m& R6 k
- backcontext.drawImage(video,0,0, back.width, back.height);
8 H# @! Y4 y9 }7 V+ R5 Z9 k - }catch(e){4 R9 k3 {2 Z" d" ^2 \5 h
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {" o0 u$ P' e/ m+ L
- return setTimeout(draw, 100);
, G1 h; j% K5 |& o" @9 O8 ^ - } else {
! k a1 q/ @8 a. T+ A8 O - throw e;( ?. b" s5 Z1 U4 u
- }7 f2 |; r' R# G% O+ B$ [
- }2 p8 j- y* z6 b9 U; h) E
- if(video.src){
V) V0 d# Y! \7 o% y% G3 \- ?7 L - socket.send(back.toDataURL("image/jpeg", 0.5));
, |! e+ P M& |( `: Q8 x - }6 [% k/ p) v0 `3 t) _
- setTimeout(draw, 100);$ E7 d: V; D* F' U& f& a4 m& g/ T( R
- }: @ U4 K# w( t2 f, `6 @4 E
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||9 B9 X9 c" l( ^6 s6 S
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
# b! A$ y" r/ l7 e - navigator.getUserMedia({video:true, audio:false}, success, console.log);/ P2 J n' h2 y. k% L
- </script>
复制代码- php7 Z8 y5 n1 u; r7 ]# Y2 K- L" Z
- ' j7 i6 V8 N+ H
- $server = new swoole_websocket_server("0.0.0.0", 9502);
$ s" r" h0 T% o ~& J1 ` - * l% U6 E4 U- n8 T+ W
- $server->on('open', function (swoole_websocket_server $server, $request) {: `( E+ ^# G, I' o5 G% ]
! v' h9 X9 C# S9 x- echo "新用户id:{$request->fd}加入了\n";) j1 y0 }5 o% K, r
- // echo "server: handshake success with fd{$request->fd}\n";; F0 z# [2 E/ H% Y
- });3 i' B6 Y$ Y1 ^; w* v
7 G! T( ?$ q* ]! F |9 g- $server->on('message', function (swoole_websocket_server $server, $frame) {
0 o) D0 W" x* p
7 i; s, ` v6 m4 o. y, k- //循环所有数据3 R0 e) J( M& W: [, n2 n9 m9 _
- foreach($server->connections as $fd) {
5 a) M- ?0 z! q. U& G# b - //返回数据) k" G* W4 j( t- n" q
- $server->push($fd, $frame->data);+ Y7 E' E9 N+ v; c- Z. s! j2 A( K
- }
5 |3 @/ }) c8 Z. F8 z
! {9 w) c& ?# i- s- });
- z0 b- Y4 F+ p/ w5 W# a+ e, h0 G9 [ - ) E4 ` N0 j& z3 y- e- C5 C
- $server->on('close', function ($ser, $fd) {
9 D: U( q V. ^, l/ R - echo "用户id: {$fd} 退出\n";1 q5 u( g8 z" r2 v8 j% c/ @* \, g8 Y
- });' n8 U' R5 {# Z. H2 Z6 a8 t
- i1 t' j, Z d, {2 C- $server->start();
复制代码 ' a1 M8 ^4 H# S8 ]6 _+ j
' e) q& f# L- L
% E$ P+ Q1 F. ?0 `7 a
$ X; `4 B$ T" {" ]& r5 J' D/ ~5 G. H$ ^
* ~* j; L9 }( S+ V! l/ Q% @, d6 r9 _6 v+ [, K' t8 x
* E7 f4 D" P2 ?& _
: K- P `% ]& @- t& q& U
( ~! y! C5 U9 P7 l: a/ _' c! r# }$ O3 n7 `5 j" [
g0 X6 T* e+ i; F4 y) F( h ? |
|