管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
; g% y7 G% V6 ?3 I* q7 n, \( ~上代码 前端 观看页面 - <script type="text/javascript">2 O# ^* @, r$ H) H) R
- var ws = new WebSocket('ws://192.168.0.150:9502');
: r: p2 Y' ^( j0 {$ w* m - 9 A2 Z, ~2 Z }8 }4 @% J
- ws.onopen = function() {
0 v+ {) y- a+ {* C! S$ t1 W - console.log("连接成功");! j6 I; c/ z( {/ s
- };
- K* k+ s$ Y/ q6 q) }+ o- k8 b7 Q2 a - ws.onmessage = function(e) {1 s0 e0 w# A/ I4 p! T
- console.log(e);
0 l+ k9 c1 j! Z8 p - & k0 N5 c$ @- E& v; L
- var data = e.data;
& H5 d6 l2 p/ k$ t$ Y: ]2 } - document.getElementById('player').src=data;
2 ]6 s# q" i9 ~( u+ r+ }& U/ t& [7 E - };
. [3 Z. s. Z0 ~: D8 k! ~3 b- P+ ? - ws.onerror = function() {
& ]! g' c3 u8 p x8 M: _) E - console.log("关闭连接");
$ B5 }4 D% l! x. o+ j- ^+ o/ X) d - };; y; B7 z6 D9 Y' o' N$ A
- </script>
复制代码录像页面 % _& j8 [4 i6 ?# e, i
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>, x% F* f: p2 D" v- z# Y2 N+ X2 D# u
$ o2 ?3 }9 g) _0 r5 }- H- 2 J) ~. T9 J" k# t4 Y7 {9 C' @4 R
( z' }+ j, |9 Y; b. i9 e9 Y7 t9 }- <script type="text/javascript" charset="utf-8">7 A( @' m* n% R
* U% n! \1 J& Y-
9 @ D' `5 Q& X3 B - var socket = new WebSocket('ws://192.168.0.150:9502');5 u) v: H* h2 N4 _! H0 e. O4 U
- //socket.send("嗨我登陆了");
6 F% z3 W# `3 |& b$ I( p! r& | - # m/ H- L( m0 z D8 l: j
- var back = document.getElementById('output');1 Q% Z8 G4 v1 H
- var backcontext = back.getContext('2d');
2 s+ H6 Y7 y. F. t/ p+ }5 t - var video = document.getElementsByTagName('video')[0];
& R% A) V1 q1 G; ]* [' Q+ T8 r - * l. k; Z& N# _( g3 f! N
- var success = function(stream){
[+ `" \ M- E3 j W - video.src = window.URL.createObjectURL(stream);( k- a1 P9 t3 _9 s
- }
3 Z) D ?3 H {2 `5 O* J" s - 6 X) P \2 q$ M0 R) _" W; e; u- c
- socket.onopen = function(){. c9 r( n5 w; K g( Y& l3 j
- draw();
, t, g( Y2 m* a& W+ F: E - }( K$ E& a* |: K% m5 j
! j' ]: T A3 ^; ]. y% B: S. e' `- var draw = function(){; A+ g3 h5 L/ p" ?- g# O0 @6 K ~' ~
- try{
4 e; ]2 a. U H3 j3 f. X - backcontext.drawImage(video,0,0, back.width, back.height);
- R7 l; Z* Z4 | - }catch(e){
; J' ]8 T, V! q$ a2 w" I - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
& f$ V9 F) y$ A/ p* n4 t& { - return setTimeout(draw, 100);7 J v& a0 A, l0 D6 N1 @
- } else {
6 e: N! Z1 x4 |! Y; F$ |8 Z - throw e;
! i" F; \: S0 Q- O0 { - }
4 ^2 a l3 m/ D. W; d - }$ }7 Q% c. F6 k
- if(video.src){
8 I0 V- f& ^3 H - socket.send(back.toDataURL("image/jpeg", 0.5));6 y8 [, m0 Z' g8 z
- }& ?* K4 _: D( V$ j
- setTimeout(draw, 100);
' F# X( C, u' }, d) Z1 [, O+ S; o/ I - }! q$ t% B% h$ U. H0 J
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||! y1 p& S D. V F6 q/ M( X
- navigator.mozGetUserMedia || navigator.msGetUserMedia;: F+ R& y, `! v
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
) o' R& c4 j8 G2 ^ - </script>
复制代码- php1 L x D( A( R# c/ @
- 1 N# d' q5 ^4 I
- $server = new swoole_websocket_server("0.0.0.0", 9502);) ?6 Y: h" g, `. ^
- ' u" L& l5 @+ H4 u& S
- $server->on('open', function (swoole_websocket_server $server, $request) {6 X3 n' a1 A7 q8 C: S' R* @! a
- 6 p( L/ M# h9 ~% P
- echo "新用户id:{$request->fd}加入了\n";
! t2 G2 P3 A8 {9 h - // echo "server: handshake success with fd{$request->fd}\n";
& k8 S8 k7 h. G+ }9 s - });8 O1 w: a8 V9 t, N
- $ I, ?6 F3 R! f+ }0 j4 Z2 x) A
- $server->on('message', function (swoole_websocket_server $server, $frame) {
( N% Z& @: }# q- d/ t6 o
! W1 R- Q3 L! ?- //循环所有数据
" x9 p3 ?0 L7 Q6 y - foreach($server->connections as $fd) {. y, o0 c' s% g0 ? O
- //返回数据
' z1 l0 i, h+ G# @ - $server->push($fd, $frame->data);. ~: ?5 ?" @/ J d) _# s% @
- }* T( g& O# @% |
- 8 X; E5 U) o% P1 `2 Q. I
- });# ?0 X) X# O1 p3 M
* R, k: C5 a; T+ ~! V- $server->on('close', function ($ser, $fd) {& M( Z6 Q7 f+ t, b" A- l1 Y8 J
- echo "用户id: {$fd} 退出\n";4 N) T8 }6 x1 a. g) \
- });
# x2 @+ _9 {- z6 l; |0 Q6 l& u - 4 P `' B& B, | J. x
- $server->start();
复制代码
2 ]" y: Y# D2 h1 U' J/ T$ w4 N! [. f" s+ [3 _
; u! {5 k4 u+ p9 q' n: e( A) t+ a G" [( ^0 t1 h+ n9 ]
: X& N' D/ c, o5 H
+ ^0 \. [1 ~/ \. b
8 P! ^- o1 f7 {. ^4 @& |( d- ~. Z: |- }# n: q; ~4 h( u( w
% U" p2 m0 {# g$ ` ]# `5 X
* M4 Y0 |! m; |# [# e" u F$ U+ Q) n; u# G
6 B% j S! d# C5 N% `6 p. B/ n |
|