管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
8 v$ c1 I" A! A' u/ X上代码 前端 观看页面 - <script type="text/javascript">" l! B a7 |- a+ M3 A, P
- var ws = new WebSocket('ws://192.168.0.150:9502'); E8 t5 a K/ z1 a; j2 d. R# o
- " h0 b) w+ s8 G+ m- O
- ws.onopen = function() {* N" k) F. O* }4 T1 e) `1 y
- console.log("连接成功");
2 p0 a9 k- I: c$ y- ?) a - };$ s0 G# w0 f; s: F" p$ e" Z
- ws.onmessage = function(e) {
- N6 R. ]; h: m# \* ~2 J - console.log(e);. I% ^5 w# D7 P+ J s% k/ b+ R' y' R
- ! J7 k4 M1 j' Q, p
- var data = e.data;5 B6 N+ Q; L, E- @
- document.getElementById('player').src=data;
. H2 Y9 r2 g1 Z& }2 S - };
! U8 O' K4 g/ e( [! w - ws.onerror = function() {; Z3 K1 i( Q+ e9 K
- console.log("关闭连接");
6 k4 b* b3 N. D5 a - };$ |' C! F6 R+ A
- </script>
复制代码录像页面 3 x' v, n: z* _- Q K9 Y' E
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>. P# r4 O5 }, y5 |, p9 f
- ! w1 Q t, X; N1 q0 _8 M1 x
7 d3 ^$ O, X' j$ a1 X2 p* m
% [( H, l/ c! X! e8 f1 c" |8 p- <script type="text/javascript" charset="utf-8">
, Z q8 K5 ?% L2 c- P0 Q; x
h4 O' |/ N0 i& P7 d-
9 r( _" e2 F; j# E& E5 v - var socket = new WebSocket('ws://192.168.0.150:9502');
$ z! l: D% o- V7 g! c+ \/ r& E5 H - //socket.send("嗨我登陆了");
8 q' `! H4 ]( l1 K* F3 [/ _ - . \6 D* x* ]3 u( k# o( p- l
- var back = document.getElementById('output');
+ S8 M+ r( |9 A9 j' W( f - var backcontext = back.getContext('2d');( C# A4 l N: B5 g) L J) ?* W
- var video = document.getElementsByTagName('video')[0];
! |4 E2 r4 ]/ Q" k - * q: f' m2 @+ Q3 T& ^! e
- var success = function(stream){
' H" Q6 S" f3 I# U - video.src = window.URL.createObjectURL(stream);
4 }2 M5 V4 B2 C. K2 D: [ - }% y4 J8 _$ _: N+ Y, a& O
- 7 _8 G" ?% w2 L$ U4 s0 l7 q( U, x
- socket.onopen = function(){
. v, b# F* P- ^ l2 {( U - draw();
, M, \0 E# f3 B7 M - }
4 H' j- `6 f" O# S: z/ X
+ K1 Y( Q/ s5 @- var draw = function(){
# @" Z* a2 b, J$ |9 l - try{
3 C; i) |4 s3 F' A N - backcontext.drawImage(video,0,0, back.width, back.height);
) p/ b" R/ o$ O4 E# B" ^. d - }catch(e){
" f% ?9 L1 ~, |( v% X - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
9 {# `3 y ~; C: g! G% v - return setTimeout(draw, 100);
8 R- I- u9 h3 k* T1 ? - } else {" ?) |. k+ u8 C4 M
- throw e;; s! y! K0 d, V7 R0 g
- }6 i, w) a$ l# }' ?0 F1 J- J
- }: d3 g, @: J0 ?. Q
- if(video.src){
& k$ O ?- a: f+ W# X0 h( l - socket.send(back.toDataURL("image/jpeg", 0.5));
( F( W, D7 ^! r2 m* | - }
7 v# W3 B& f( d' x5 ^3 g' ]/ z6 H - setTimeout(draw, 100);
: N. N" p6 h9 J, o" A - }
# `8 y4 O6 e: X X - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
6 {( s2 ~2 H3 |9 t' F - navigator.mozGetUserMedia || navigator.msGetUserMedia;
9 J- o3 |3 h; ` - navigator.getUserMedia({video:true, audio:false}, success, console.log);
3 F( x' z3 d; Z - </script>
复制代码- php
9 [2 a, U5 c, [2 M p0 N! `# t: g - 3 O1 M6 E% [5 f/ D4 q2 n
- $server = new swoole_websocket_server("0.0.0.0", 9502);5 \! N+ s( D' ^6 B
- * P* r4 L7 m" b# m$ e0 N6 o W; F
- $server->on('open', function (swoole_websocket_server $server, $request) {
' v8 k+ Y0 G( F9 W
+ ~8 `2 e1 f# S- echo "新用户id:{$request->fd}加入了\n";
9 N s* W5 J" T- Z Z, f; ~! L - // echo "server: handshake success with fd{$request->fd}\n";
7 [& v0 W$ F( N3 g1 ?) i - });
1 Y% D( ?% |( _5 J
6 `- l; {. q) i. D$ `- $server->on('message', function (swoole_websocket_server $server, $frame) {9 j4 Y; A0 Z1 r) o% d
- $ e1 I, o' Q+ D$ K! ]& d) b! w" g
- //循环所有数据6 t' U. H4 [7 h% k; I _ v
- foreach($server->connections as $fd) {
/ i- T! ]6 y' b8 {( n6 u - //返回数据
7 e8 R% v' H6 [) V" A7 F$ Q - $server->push($fd, $frame->data);
( s# g1 [/ X$ ?9 b q8 E - }( i& b" ~5 q8 O: b% ]6 {
8 m9 h$ h; M4 p5 J- });" ]0 M( q8 Z- g- A
- 8 M% J! T# s# `3 H4 {6 a
- $server->on('close', function ($ser, $fd) {; a; e& |; z0 `6 T$ f1 c$ W* i3 {
- echo "用户id: {$fd} 退出\n";% R0 Z0 m' v! o# W2 C
- });
. C& e$ {/ Q) Z8 o; q! ^ - 3 @# |+ l! }/ }; S7 F, d
- $server->start();
复制代码
: ?- [/ O0 U9 X+ O# a. a7 K5 M& A3 }) g
5 z- N6 u; ]4 `& t% b' ?; g2 k! }) @6 u$ [" h
8 e9 r# Q q$ }1 f# P; Y' }8 c
6 X9 O; [1 T! p+ U+ a& w' _+ O% h. d# Z. [
& J5 z* ]) D4 U9 b
* t4 `$ R! M! D& r6 y8 J$ Y
$ F$ [; K+ P/ z) X. G2 Z0 R5 k$ [) W4 M2 Z
! e& L" R- \( g+ b6 j7 }; R% C3 u" d3 W0 [4 _1 m# o$ ~
|
|