管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
2 h6 c8 H* g) g% b; s" r9 p上代码 前端 观看页面 - <script type="text/javascript">- x! A, D1 |/ D* Y
- var ws = new WebSocket('ws://192.168.0.150:9502');4 u4 g0 ]' @. F/ a9 \+ y* D2 T0 y; a
: @/ }' m3 Z C( V2 y- ws.onopen = function() {' F {. s$ M: [; w0 M+ b3 g
- console.log("连接成功");
4 E$ N, G+ @. M/ Q: O4 ~) [" Y, n - };6 N6 o% z) S# V& L7 V
- ws.onmessage = function(e) {
1 K8 j5 u" N& v f% o- a - console.log(e);
, X+ S* u4 x3 d+ [
3 s, S' e, t6 l9 j- var data = e.data;
* P6 s& Z6 b: ^, E& B8 O5 G4 x4 F+ \ - document.getElementById('player').src=data;) B8 a+ |% x- I K' n. c
- };
3 ~7 m% K t- z& | - ws.onerror = function() {
: F$ y# ~+ D0 I5 o - console.log("关闭连接");
9 o5 l) y/ c( V/ k+ A' b( N - };& m$ d9 c: p) I# u y! u
- </script>
复制代码录像页面 4 D% g( L1 W8 d( v6 S
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>$ T' j# V! |9 S4 u" t! q$ h! U
- % P2 L; q0 a8 `, n
3 X& c4 ]% i/ P; v/ F0 D
: U4 d! [- l6 B9 m) ?- <script type="text/javascript" charset="utf-8">
; }" f- j+ ^/ c3 a7 ]# o) P" W# [* q
: X# R; r. m, [# X) C; v. j) e- $ l- H& T6 X4 l4 g P: H/ {
- var socket = new WebSocket('ws://192.168.0.150:9502');
! y0 {( C/ P' ~ - //socket.send("嗨我登陆了");9 y5 F B" _. B3 T# C
- " m0 @" }2 H5 G' V1 {, V( V8 I
- var back = document.getElementById('output');
& e$ t: D$ g5 m% h - var backcontext = back.getContext('2d');# h; o E& _4 R! H
- var video = document.getElementsByTagName('video')[0];, F1 ?/ j' z5 X- Q' z4 w0 w1 c
-
% w# `7 H/ \% q0 U2 f, f3 {8 d - var success = function(stream){
7 P" m2 R' K+ L. Y1 m% ^ - video.src = window.URL.createObjectURL(stream);% H* Z& y! c+ n& E) m
- }
, s K' j: n" _/ u* ~* S - , {& V! ^6 L2 O/ B" T
- socket.onopen = function(){
$ E( I, L+ L* J, e - draw();5 M+ R! a/ Y) b6 @( ]
- }% q! u- P9 k+ h# ~
- # ~$ G: }, P9 p- F6 w- ?1 x
- var draw = function(){0 e( b* c, t h9 P) I% o* a2 Q
- try{
6 I! A9 \# o6 I& x! Y - backcontext.drawImage(video,0,0, back.width, back.height);* q- W% d5 S! L
- }catch(e){
" D! S, t( E1 y1 }0 k! w' @0 j& D - if (e.name == "NS_ERROR_NOT_AVAILABLE") {7 x$ t2 q/ |/ Y# [2 j$ S
- return setTimeout(draw, 100);
# s3 [+ f1 l3 C. q - } else {4 W4 `7 \7 D# G: |
- throw e;
; H! k6 k3 T) ~ - } r) w' M6 \+ g. {; ~
- }
6 e+ g. J' G- S: M0 r/ A - if(video.src){
5 y _" h9 W5 D( [# A. q - socket.send(back.toDataURL("image/jpeg", 0.5));6 T4 `! N8 [" l4 Q) O+ V
- }
% g4 i$ V+ H4 w, Y* S/ ^ - setTimeout(draw, 100);
/ f* o' L( p2 `! T" q6 ?' q4 B - }
5 \% K2 E# U2 ^% z$ ]# f - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
" w/ z$ Y3 M( B/ I - navigator.mozGetUserMedia || navigator.msGetUserMedia;( ~7 g! c6 Q& \0 L/ v% h+ q
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
! Z) J8 v2 k* o5 O+ p - </script>
复制代码- php* }7 [2 n+ z% q: F" h. Z
- 4 o' a3 y% _. M/ P8 J$ F% J7 Q
- $server = new swoole_websocket_server("0.0.0.0", 9502);
" M0 M3 {! U6 F0 s: h - 7 A! H4 {: L1 ^" }
- $server->on('open', function (swoole_websocket_server $server, $request) {- q. x% T( B/ w. H% m
- - p2 A# f$ i S) O. F; z; r& l- V
- echo "新用户id:{$request->fd}加入了\n";
) d+ k" d. w: y4 t, Q - // echo "server: handshake success with fd{$request->fd}\n";+ ?( p8 o. [9 O0 S# U
- });) I* j% h# Q% f1 H
) X- M7 v1 w, \% E+ l& M- $server->on('message', function (swoole_websocket_server $server, $frame) {
d# |6 z# F; g3 V+ P) J - 6 k" d _$ C8 Y2 B/ j
- //循环所有数据: s; B" B* X; }7 ?
- foreach($server->connections as $fd) {5 y1 [6 b! i5 X, A8 i, @
- //返回数据
$ D5 f; O6 Y. \ O' F. p" s3 j5 } - $server->push($fd, $frame->data);0 v- M' H. S6 f: u) L! l
- }% f" A7 M6 W1 \' P8 ^
- " e' S3 h6 K ~" a- V
- });- L* t! l* f4 H/ m7 j: ~9 P
- ! S+ I- } O3 q9 l" k
- $server->on('close', function ($ser, $fd) {
. I) H$ j0 P) b, W( | - echo "用户id: {$fd} 退出\n";
' M, v3 S/ r! o: t9 k' L - });
. `3 B4 T2 j7 n% F
1 C) Z; j/ I7 A2 s% ~+ I- $server->start();
复制代码
, c- O" f u# N0 U6 C/ E
" A1 k I- L4 C8 s
0 ]8 g1 r7 M! J3 @
2 q/ [1 ^; G) m1 c' f4 ?& c/ j; G! q+ g2 a
: s8 `, l. J+ b, O' M# N
7 i' j: B! `5 ]9 u
9 t$ S4 U2 u& ^9 V v9 H2 u
+ u. j$ f2 a1 P" ]6 {3 c* |# l
3 Z. W. a& y# R6 u5 F2 d
4 k- ]# E d7 p; t2 }1 t
) ]4 r+ n( n: ]- d* M) Q6 g |
|