管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
- x( }: m6 r! h' p& ]. U上代码 前端 观看页面 - <script type="text/javascript">1 W+ Y, g1 s1 J$ |
- var ws = new WebSocket('ws://192.168.0.150:9502');2 K' ~4 U) g4 N1 d% c3 P: n
- }' D) q0 Q; p( {7 n1 ]
- ws.onopen = function() {
e7 A! F! q) ?1 a' ~' Y6 ~* g - console.log("连接成功");6 e9 x; R, E5 h% a* o K
- };+ c: q$ R9 Y9 Q
- ws.onmessage = function(e) {
6 M$ i8 A1 D- k# S - console.log(e);
7 Z# ], c9 O9 W$ ]
" l1 d& C/ z1 }: B+ p- var data = e.data;6 \4 q0 t6 A$ ?* {. I* P
- document.getElementById('player').src=data;$ k& R9 ~7 v9 z6 c0 f
- };
: h1 ^$ q% P M8 p* }1 J - ws.onerror = function() {
6 I* f5 x) Q" P - console.log("关闭连接");8 k' G' R8 T$ k
- };
$ X# r1 M# `1 @! E* a - </script>
复制代码录像页面 / t: V. L% e2 @1 U( F* ?
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
3 l& s f# B: a/ V7 k0 j( z - ) \( z1 B/ d0 ^" [ Q$ I9 Y. ^
- 2 {; P" I N- E7 c
- # N/ q3 }. E- M4 P' @. R
- <script type="text/javascript" charset="utf-8">
1 p. D' C: @, v4 E c# N B
/ X$ J# q! q V# h4 D- 1 e4 C6 O8 [7 Q7 p; `9 W0 j
- var socket = new WebSocket('ws://192.168.0.150:9502');
& ^* X# ~( s w+ h, c5 e! L - //socket.send("嗨我登陆了");
1 W; m! l, D+ c" ^4 b, g - * ]5 X/ A* w8 P' I/ N6 d
- var back = document.getElementById('output');" y: m1 }5 J- \. E J3 u2 ^
- var backcontext = back.getContext('2d');3 g0 G7 Z p7 r. e! n6 u
- var video = document.getElementsByTagName('video')[0];' r/ X N! t K3 I3 i6 r4 e
-
) {2 ~9 S, F" E( Z7 @/ E - var success = function(stream){& i' D& c9 B) S4 N# ^
- video.src = window.URL.createObjectURL(stream);
* _9 h+ J- A" \4 V! b - }& Q% M" h( l1 t' {
- 7 p2 [, b$ z7 |' A5 D1 D S+ y5 \
- socket.onopen = function(){
' P$ O7 y1 {& l. l1 X - draw();
- I- n. o* J9 C - }
. g0 p* [9 u9 Q" q1 D+ q
/ T- h! O# V- @4 P( k* ^- var draw = function(){
5 ]: l5 {/ H3 t4 q2 U+ H+ v! T3 \* b! b - try{0 G# L6 L1 w2 A, D
- backcontext.drawImage(video,0,0, back.width, back.height);+ M# h* s) [( T1 z% q2 D
- }catch(e){
8 H1 X/ r- d3 g; T! e( w8 b) y - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
5 p, J6 h1 F- Z8 M; y i - return setTimeout(draw, 100);
0 z3 D$ ~( Z2 W0 ?2 W: O3 d - } else {
9 ^, p1 R- K! O; J& G3 m - throw e;4 @2 y& b9 I! T6 m! n
- }" W2 H4 Y- A' N# f$ K8 V( d
- }
2 U- N' `' y" Z |" F6 t- E - if(video.src){( v: f [0 C( i# W
- socket.send(back.toDataURL("image/jpeg", 0.5));
( Q! r6 o9 n' f$ l3 B5 _ - }8 H& o* J7 ^! n- C
- setTimeout(draw, 100);
% \/ _4 |* ? M1 @ - }% V, C& ~" Q1 {& T# h8 g- D; ^( e
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||' x8 j( R0 K7 C5 `% R) i# N2 u5 \
- navigator.mozGetUserMedia || navigator.msGetUserMedia;- ?0 Y) U- W4 W% e; L( B1 k. s1 P
- navigator.getUserMedia({video:true, audio:false}, success, console.log);, b1 ?" u3 `" ]" _. n) C
- </script>
复制代码- php0 C/ B; {9 M( k, v7 C
5 ~2 v/ f% ]' Z- $server = new swoole_websocket_server("0.0.0.0", 9502);
. U8 b* Y9 |/ z8 o, ~6 ^( h) _4 e - 4 C; k2 T" k$ {3 B4 I
- $server->on('open', function (swoole_websocket_server $server, $request) {
' e7 l) n" n" [# W% F - 2 M' J: x+ K3 O! {
- echo "新用户id:{$request->fd}加入了\n";* A/ E) i) [7 m
- // echo "server: handshake success with fd{$request->fd}\n";
- d0 v. M! r) g, l - });
. T' _: ?; b) `! N - 1 j2 \: O* |0 k& k3 [
- $server->on('message', function (swoole_websocket_server $server, $frame) {
0 ]" ^- {9 V+ C6 d8 O, d: W - : s v4 J* K8 U0 H
- //循环所有数据- Q& E" U( s6 `( U
- foreach($server->connections as $fd) {
- V5 t0 l. o" i& E- g0 _ - //返回数据$ x. U$ _( ?( N. z
- $server->push($fd, $frame->data);
0 J# d& U1 K# {7 l9 s$ | - }9 C, C8 t" n7 n! O
- 6 | {. L1 u! O, H1 o# J
- });
( J6 `. e0 T4 u' E9 j3 l& S - " b8 f o' i( B/ E" ~9 d
- $server->on('close', function ($ser, $fd) {& ~) }# N- ~& i( N+ {8 \, @8 {
- echo "用户id: {$fd} 退出\n";
) J& o- Y- a) j, D" a4 ] _ - });- ~, Z j2 J! e$ V; V
- D1 i Z6 R! O( Q2 K
- $server->start();
复制代码
t2 w. y) w) ^, @' T. S
" ~3 L# j4 @7 j& t, |5 M& s
" _2 l' t$ d- ?: `" h; O8 X0 u$ v* U1 E, n
- q( |# ^+ Z: i7 u7 i7 R, E/ d6 b9 @/ l
) p) @1 Z1 A" _( e3 K2 [) U& y3 U1 }3 I) ?& F, w# [3 }
p6 N/ n/ T' t z& E
7 K& U( ^" ], C& C& B: X+ s
1 l( p( M" o2 p. s! c
7 }0 Y! y% |8 z. R. l* a |
|