管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
3 [: y$ l- b( g7 b6 S3 K& u上代码 前端 观看页面 - <script type="text/javascript">
& `1 I" G. f& J, ~: f3 v - var ws = new WebSocket('ws://192.168.0.150:9502');
' L- R9 P# ?7 d' e
" J# `" Z. S, M* P- ws.onopen = function() {0 q! [) x; c* M& |$ ~. T, i
- console.log("连接成功");
' O, x; d3 r4 A7 L+ H1 R$ D - };
( E' o; b/ g% P3 k1 [ - ws.onmessage = function(e) {& N' A4 J) {8 `$ n
- console.log(e);- D/ D/ X4 K y- R! M
- . C v4 J K2 D! U1 J2 n; Y- w9 {8 u. X8 o
- var data = e.data;
( V: e$ \6 y, }" N6 J - document.getElementById('player').src=data;! F( ]4 b D1 J& u6 C
- };
7 E* |7 t5 |$ ]$ g4 ~% A9 Y - ws.onerror = function() {5 ]9 Y+ ^0 g- `5 x. M3 A4 c9 f5 }
- console.log("关闭连接");
" P6 _& T6 R P" j; I - };+ t: w2 j- u9 b! V
- </script>
复制代码录像页面
. o$ b: A1 H' P: a* v3 \% _最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
1 I/ O0 ]/ t" \+ U - T# F3 B7 `9 K' F% {8 r4 F. l
- # v9 K8 v5 ^ G% f
- 3 r% \5 y/ {3 D
- <script type="text/javascript" charset="utf-8">
1 ^/ n! ?- O( x7 T( H7 E( R; Q5 O/ e
6 W, A1 D4 a9 G* D) ^- D0 W- & ^3 w3 y4 x( m: {6 A' Y
- var socket = new WebSocket('ws://192.168.0.150:9502');3 n1 c( w G$ o: A
- //socket.send("嗨我登陆了");
# n, b8 V9 T8 f6 ?
9 Y) \) h/ k- l! M/ I8 Y- var back = document.getElementById('output');
- v) A( F' o) F q0 a# F - var backcontext = back.getContext('2d');
' t, W8 d) Z3 J9 e( @ - var video = document.getElementsByTagName('video')[0];% a7 f: Z* {& e/ ~7 a5 |
-
. ? X3 C4 C2 j8 R - var success = function(stream){
. h' v, D0 \' b# K - video.src = window.URL.createObjectURL(stream);3 t8 T' G+ m0 _- U( s
- }
0 H) L0 O: S/ `1 \8 P. n
" d& E0 ^9 ?3 v$ ]9 w- socket.onopen = function(){
' l* L X. X \, ~' Z- @5 C ? - draw();$ C( U/ B* L* Q/ `1 c
- }& E+ o6 g- p6 J
* L- w% L- H) h. C- var draw = function(){
9 a8 Z5 C% i6 P* L+ _ - try{/ o9 I# E) e( U- S7 [' e" P. _* F7 a
- backcontext.drawImage(video,0,0, back.width, back.height);
8 m2 G/ R' Z+ ]) P2 Q8 [ - }catch(e){. H" R0 J9 g: j2 Q- x
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
1 b- i! x- j- W/ E. E( k - return setTimeout(draw, 100); Z- S1 {8 J7 M4 z/ @
- } else {" c, `# S' o, n* P- v) k
- throw e;9 s3 u" P' w2 L9 l) A
- }1 f9 m0 |* k! t- y
- }
# K3 k) V7 N: c7 C+ { - if(video.src){
0 p+ X5 ]4 K: u# j8 v - socket.send(back.toDataURL("image/jpeg", 0.5));
3 J" ?! }: T5 W! i - }
" H8 l. r, e/ }0 @0 M - setTimeout(draw, 100);0 E0 u* s9 G+ h1 A- f5 e
- }
& @* n# T" B8 @$ w - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||) Z+ l1 D _4 ?& T! t; L
- navigator.mozGetUserMedia || navigator.msGetUserMedia; B# l$ q7 R/ }- D) W2 G" c
- navigator.getUserMedia({video:true, audio:false}, success, console.log);- l( L5 c' j& R; t% U" O# c3 H
- </script>
复制代码- php
0 y2 E3 n4 {2 G- |
) {4 A* G; |6 R8 R- $server = new swoole_websocket_server("0.0.0.0", 9502);) k1 c9 o" E9 \, [' M
5 C' O3 s) j' O6 w' B( S& j; k- $server->on('open', function (swoole_websocket_server $server, $request) {( v4 _. k9 Z# |% I
: V1 G5 Y' B; A- echo "新用户id:{$request->fd}加入了\n";
# A$ e7 J* Q% M* w5 L% [, P8 J - // echo "server: handshake success with fd{$request->fd}\n";
) R8 x2 `0 w1 P" g - });
% _' g; r l3 \/ `: ~& ^
# m, ?" k. P' E- $server->on('message', function (swoole_websocket_server $server, $frame) {& q+ _% D" C3 W& X" |6 ~1 y
3 r" }, n/ F1 n# d+ k# _- //循环所有数据8 {+ |' S7 E- G' J2 \$ @4 c# T$ d
- foreach($server->connections as $fd) {2 d" U. b$ p' Y: C! ^
- //返回数据
4 Z: V# S$ k5 U4 c - $server->push($fd, $frame->data);' g/ m' {* j K5 I' K. L
- }3 A$ _# ]# p J9 g4 o& |
% ], B) y5 v( t6 t- });
2 \: b4 `3 D% `/ F9 ?
/ _* M6 ]8 t) D$ U) x: P' F- $server->on('close', function ($ser, $fd) {
0 v7 u1 k5 L! \/ _. _% f - echo "用户id: {$fd} 退出\n";
$ ^) [! ^3 u0 ~7 R3 x. {. X( O! k - });, b" n; \8 ]9 L( R3 V
6 Q d+ R- J- b W3 d. i3 ?0 s- $server->start();
复制代码 0 g' f- h1 [. G( b, |8 h! w
9 ?1 k( K, R$ c! R2 r- C/ w. [7 u0 [) e" U; ~4 g) h) l
3 U' Y. g9 |9 T+ n- w
; t2 n W5 M: v" q: X8 D$ B
. T$ g0 @4 g" }5 V5 ?* H" m( O# m8 K* {
" A- q4 }0 H8 S- H( S9 R9 d
8 {5 x% G- V' ?9 ?3 F; g4 g
* S$ B" Q% C6 F5 m0 m; L+ l8 ^& L6 v- N
- u- k O. o% k) r" }' B5 h7 `
|
|