管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
' R' d7 f) N f Q7 \上代码 前端 观看页面 - <script type="text/javascript">
0 r* k* U3 ^, I% y; i4 Y - var ws = new WebSocket('ws://192.168.0.150:9502');- d$ f5 a2 G' y6 G9 o$ W
- % L: k4 M4 A7 p3 p3 f1 J, \
- ws.onopen = function() {
) z. n B: q. l1 e0 ^/ J - console.log("连接成功");; L( u- k+ P3 F1 p. B5 k V9 [2 E; `
- };! o0 `8 H0 ~; s. x7 ? H
- ws.onmessage = function(e) {
* Q% m, ?7 ^7 B# u5 }% e, f - console.log(e);. |. ?' `% n( N( G3 a
- ) A/ x- D: A0 n' Y( N! a/ r% v
- var data = e.data;
2 W4 l! L4 J/ p) |# |. q7 m Z7 j( Z - document.getElementById('player').src=data;" G, c& m Q3 ~
- }; W8 I" @% ~$ @
- ws.onerror = function() {
' j: l# k* @, T- t" n2 \/ o - console.log("关闭连接");: n) [: E0 ]6 ~
- };
0 W# b$ Q. A; f; ` - </script>
复制代码录像页面
D: z0 U3 q) T! n) a$ [/ E最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>2 e4 {: s- w( V# b3 j. g, B
! H3 O1 t. {9 J1 S) L% k4 L# a
9 L$ I \$ i. }: ~. \4 [# z: b5 ]
; j- u) A# X$ k4 s2 m- <script type="text/javascript" charset="utf-8">
: t4 Z" a8 ^) j* d2 @ - 3 i) Q$ u. D2 g+ S1 s
- 0 W, \4 x `4 ]" k9 J9 g0 `3 I+ a ^
- var socket = new WebSocket('ws://192.168.0.150:9502');
/ j# m s w ]4 x - //socket.send("嗨我登陆了");
' x- y, T8 d4 M, P4 d$ t - + t* X8 S' h) d: e! ]% e' n2 U0 `2 p
- var back = document.getElementById('output');4 u0 H5 {* b6 Y1 ]
- var backcontext = back.getContext('2d');
8 h+ H* T7 `8 m7 _9 d - var video = document.getElementsByTagName('video')[0];
8 a, C& Y8 M# U6 D) Z+ [3 S - 8 O# ? L" n/ b: D2 I
- var success = function(stream){
: Y9 X& }2 L" A; X - video.src = window.URL.createObjectURL(stream);- [" t+ V" o* H+ m' q; f. Y, Z
- }
# E& j$ h6 [- Q F6 ` - - p; \/ D" W/ D* ]7 N
- socket.onopen = function(){+ D6 H8 {1 O1 C6 ?7 H
- draw();/ y' p5 _! P) B4 v; ^- W/ v0 l$ B
- }4 O" i9 f/ Y8 P- L
- @7 V; m, X& U; u# |- var draw = function(){
1 i3 Z) b; K, F/ {: E/ \! y0 z - try{
% N6 m# Y) S) I- i) C- v0 ^ - backcontext.drawImage(video,0,0, back.width, back.height);+ U' Z9 f( I- h. O0 Q
- }catch(e){
+ v! P& \% k+ l1 L- n8 Q - if (e.name == "NS_ERROR_NOT_AVAILABLE") {
% R/ r9 _5 [9 g Q# a# W/ Q1 V; U - return setTimeout(draw, 100);
, g( \$ O8 g2 X# h" t' Z - } else {
: \: C1 d% z* j) K2 q - throw e; @( q; l$ v) Z. ?# ~) N2 E
- }
0 `/ g7 ~2 `: v0 G% Z - }+ T3 O" Y# ^3 R9 o, K* r
- if(video.src){
/ u% L8 d5 o: u( o- _ - socket.send(back.toDataURL("image/jpeg", 0.5));" r% ~0 B+ t( m
- }
% ]# k+ D: r+ l: Q" z/ }& ^ - setTimeout(draw, 100);2 J* R% Q% ` t+ r
- }
5 w. n6 I& w7 i- {( j - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || s- ~$ ^$ O, Y
- navigator.mozGetUserMedia || navigator.msGetUserMedia;/ S- o; o+ A0 V! Y+ c
- navigator.getUserMedia({video:true, audio:false}, success, console.log);3 m2 c& T, U; j$ ^* F, d5 R
- </script>
复制代码- php+ l7 b; Q! q6 S# L2 R7 g! U
E. p0 a7 z. G, W0 R1 J- $server = new swoole_websocket_server("0.0.0.0", 9502);
! J# ?) D% B2 j0 |3 L. s% S
/ X& ^" ~2 M" p* f- $server->on('open', function (swoole_websocket_server $server, $request) {
& m1 m' \' K- e+ u9 n( ? - 6 u* [. k" n& K% ]$ @
- echo "新用户id:{$request->fd}加入了\n";7 p# o* h0 o5 u9 u ^6 r
- // echo "server: handshake success with fd{$request->fd}\n";
4 i$ Z% W: c/ ]+ H$ V - });, s# ?3 D* ]- h: n7 G8 H* m
- ' j' {6 @- a/ E* K
- $server->on('message', function (swoole_websocket_server $server, $frame) {9 [- t) F9 W0 c0 P% |. s
9 Z6 I+ r* O0 \& w/ c! u! `- //循环所有数据
( H8 W1 m8 V# i1 X1 h - foreach($server->connections as $fd) {. L" F: L e1 f) u2 y6 }1 ]
- //返回数据! G7 @6 c1 y" U( ^/ b
- $server->push($fd, $frame->data);
4 ], c# P) w6 D1 H: [( z8 M - }
: I' _" d$ F" b! J0 z
4 I& F! I7 w7 b7 J- });
: k) h* D$ J8 B2 K, w) h
; o% `. \ ^( Q: b& m" ]- $server->on('close', function ($ser, $fd) {
9 T& B4 @& A" I* k$ Z - echo "用户id: {$fd} 退出\n";2 w" g8 M9 C! T8 F8 s. v3 S/ W
- });
2 M3 s4 c! u( w/ A/ S" G N' r# P" Y p
* u: }7 e* A& q! q6 `2 ~- $server->start();
复制代码
' F2 x0 I @( @8 B! f$ ^, k' T
( o. A* n; J8 w4 L; K! I- Y2 \7 J- K* B8 R# v
% _3 C* K# q6 I" e" r& X% r' V; U( ]+ O3 g
# D# K K% y* s( n+ w* F& R( Z6 e+ R: L% x/ T# B
; K$ ?, P9 w8 m" c% v5 H% k& m4 R+ `( G1 B, K& C" q/ ^6 e
. t4 D; c( p/ ~$ B0 {6 T
8 u% \& b- q# y k8 y3 W7 n
% j3 h$ E6 Z5 P5 R, c9 ~% X- Z; r |
|