管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
' \$ c0 d: U0 z, o# J- w上代码 前端 观看页面 - <script type="text/javascript">
- ^3 s. K. G6 v* |; f; H+ ? - var ws = new WebSocket('ws://192.168.0.150:9502');
& x# j6 J- O; y3 R - 2 d3 O$ Y/ ~- T) x& O2 Y
- ws.onopen = function() {& t( c% |/ X' V1 L/ ~& b9 g
- console.log("连接成功");
9 m0 }" Y6 F) ^2 j1 u - };: e" o6 M% O. D8 j1 }; k4 B
- ws.onmessage = function(e) {
+ l, ~( O* E* m* q6 V - console.log(e);
5 }* c( o& R2 `( r( D2 [ - + i7 B7 A7 A2 H
- var data = e.data;' _$ z# \+ |5 @2 [# f
- document.getElementById('player').src=data;
( Q& A! w- i/ W( V5 H# h - };
) h. C! u6 ^" y# v2 k# h - ws.onerror = function() {
2 ?# t: Z2 k& f+ i# g( O0 A - console.log("关闭连接");
9 F! ? \. W F. O - };
6 r+ n& ?' y" Q3 [) C6 U1 _( B+ c9 [ - </script>
复制代码录像页面 u2 D' ^+ T6 ]+ ]
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas># g/ `+ X1 I' f" ?) v: ^6 w
- ' y; i) a: m/ m& V! a F4 B6 t
- 9 n1 s) C, Y& Z8 J9 S0 K& B* m
p$ ] L# D$ `8 s- <script type="text/javascript" charset="utf-8">
+ X5 P' u) {7 t
7 H& D" q o& e: W5 i-
}0 ]& x3 m5 X8 y5 M# `: w - var socket = new WebSocket('ws://192.168.0.150:9502');, w2 X) U% n2 ]
- //socket.send("嗨我登陆了");
; k; @2 {; U, |& l$ R( D
" R& g! i4 L* Q- var back = document.getElementById('output');8 [" @ d/ s7 }! K" O7 C* j
- var backcontext = back.getContext('2d');
$ Z! D& l8 m- H - var video = document.getElementsByTagName('video')[0];
2 x' U) H/ A7 N8 u% v' G -
! Z0 S8 x4 E' u6 i - var success = function(stream){
% {; L! k: o* S" j - video.src = window.URL.createObjectURL(stream);3 Z) S" u6 S' S$ p: V
- }8 o" X8 j2 ^3 S* p1 L
- 1 \- I$ l- d: e+ B1 @
- socket.onopen = function(){4 w. m& d2 E4 Y- U, ^- z+ U
- draw();9 M9 \: ?- i- q6 O
- }+ U9 s" E' b" u8 d4 W9 R
: D7 P0 k$ d4 Q( d/ j! h$ T- var draw = function(){
3 S, m" N# k% h( e. b7 M& }1 k% R - try{
# x4 f$ |* w" Y6 t( r# q4 x - backcontext.drawImage(video,0,0, back.width, back.height);
/ m o; a0 d9 P% e% y' |0 B - }catch(e){
6 ]+ y" v7 h; h! }$ I2 T% [ - if (e.name == "NS_ERROR_NOT_AVAILABLE") {& [1 {$ @& q6 |& e8 t p) ?
- return setTimeout(draw, 100);' i( g6 P0 A8 G H- P* s
- } else {
0 D8 E; B9 ^- x- k7 G - throw e;
9 @+ v* k9 Q$ S" M - }
8 w7 h# i* Y% G+ _7 z8 i( Y - }1 I/ Z* g+ z R, X) J
- if(video.src){7 w( f9 N* v* p5 d f0 w( ]/ J
- socket.send(back.toDataURL("image/jpeg", 0.5));9 B# A" m% r# k" o# C& v- L
- }
0 x, Q8 n; @4 D# _- z! Z# s - setTimeout(draw, 100);# O+ q! J3 T. {6 c
- }2 c& `- X+ e( F5 w( b2 ]* w( v
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||+ I! ^9 c- M" G- i: j7 \
- navigator.mozGetUserMedia || navigator.msGetUserMedia;1 d. l/ g2 N0 o1 g, k
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
$ Q+ \0 K3 B9 a9 C# ]( f - </script>
复制代码- php0 m I1 r$ f5 b
- , U$ l" R' q# x- x0 A. G3 n
- $server = new swoole_websocket_server("0.0.0.0", 9502);
/ w* _2 [& N1 Z
# j: T2 R+ X: ]6 @. _* ?- $server->on('open', function (swoole_websocket_server $server, $request) {
& b& U$ h: b# @/ u3 L0 H `; `
! D) ^ Y: |' B) y3 F' E8 w- echo "新用户id:{$request->fd}加入了\n";
5 C" F5 a* @$ @* c) g4 t - // echo "server: handshake success with fd{$request->fd}\n";- v* d4 l# ~+ A- x
- });
0 e: c/ B0 \ { - 5 S3 C3 a* h- B: i3 t3 G
- $server->on('message', function (swoole_websocket_server $server, $frame) {
6 [# u. X( T; L! n+ j3 l; }: N$ } - + Q1 \6 m9 W- g8 p' r/ u; [2 a
- //循环所有数据9 k" R8 x$ s$ J9 i/ C) _
- foreach($server->connections as $fd) {# ] A) c: }- `
- //返回数据
% }' w6 h0 j% V' h - $server->push($fd, $frame->data);
" \0 `, e. z5 O1 f( i+ \ - }7 b. u1 m8 H5 \/ I2 L. p
- & e5 b6 ? n n: U8 `; H i
- }); S" u0 R9 _0 O7 s
6 Y" Y# U7 a3 a0 C! n2 Q' C- $server->on('close', function ($ser, $fd) {1 D4 B; G5 j2 u( J
- echo "用户id: {$fd} 退出\n";0 W$ x) @' J0 T+ D. S% i
- });+ _' X, i5 T: D1 b
. ?: T) Z% o) r" }- $server->start();
复制代码
4 ]" W. s/ d5 d6 L) p0 L& e) F
4 M1 ~+ i9 O" u2 D. }$ G! h6 F. ]: r# l8 ^, M! Q; T1 G
" d. ^. i: [ f2 o! @' q6 {; v0 c" u0 F
' F# Y9 Q3 j) B& A" E9 S
6 [. M0 ?* D9 N' G5 J( P
1 ~2 Z+ W% k. V
) Y4 T- |: U) T/ d# H
/ C5 H& v1 Y) a3 e. P% R6 F- i4 y6 Y( [3 }
|
|