管理员
![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif)
论坛积分
分
威望 点
贡献值 个
金币 枚
|
主要使用 webstocket
/ M( u1 A! w9 Y& z, \4 u上代码 前端 观看页面 - <script type="text/javascript">6 Z. f: S/ u2 {: y' `5 O
- var ws = new WebSocket('ws://192.168.0.150:9502');+ j+ T3 m* H q. E1 G: \* D
- @( c0 L/ W, }. F9 ?4 M* E- ws.onopen = function() {
, `# z) E5 `1 }; |" W @ - console.log("连接成功");
6 r$ m% H) M7 ~' i2 X3 I' e - };
b( ~ s& J& `0 w8 R$ Y - ws.onmessage = function(e) {5 L8 C! b# e3 O G+ r
- console.log(e);
4 E7 C$ V- }6 Y$ q: \ - 1 r! e5 p" z) b. w- O9 T
- var data = e.data;
& p+ r$ G* t% n" X8 T0 v - document.getElementById('player').src=data;
2 {+ ]+ P, ]6 q: t; N# G& x - };
3 f" h# E1 p( p - ws.onerror = function() {) v# V9 l8 ~# K: A: f- l
- console.log("关闭连接");, }" P( y7 f4 o" b% Q+ ?$ O
- };
4 {$ D+ i5 M& M. `% x - </script>
复制代码录像页面
m6 ?( T- ~+ D# `5 m# ~最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>
3 H- w9 l$ k& i* f0 F
: x1 _ Q. X! |$ A" l6 }- , R F9 `8 S2 J
5 i5 P/ a: T* h- <script type="text/javascript" charset="utf-8">! A( W) `2 X4 \
- ! ]; f5 X* l$ q' ^' k8 \2 y
- 7 ]$ U% I; J6 \% P- y. A
- var socket = new WebSocket('ws://192.168.0.150:9502');
0 _, g9 K! y; {1 l5 A$ y9 E5 n - //socket.send("嗨我登陆了");
8 U2 M# }8 K+ i1 {4 a. q, b, E
8 F4 ?1 S* p. z+ G) Q- var back = document.getElementById('output');$ c& k: I6 Q8 E8 y# l
- var backcontext = back.getContext('2d');
& q7 z( r( M: }4 Q B4 L' a1 h0 ? - var video = document.getElementsByTagName('video')[0];
8 n7 R q6 b! t7 S -
! Z7 r" d" U+ v - var success = function(stream){
% p& M4 k8 @+ L: {' m - video.src = window.URL.createObjectURL(stream);
9 B7 w! l/ C: c7 Z* I - }* k" j. S8 P. i1 T6 V
- ( L/ q: d2 [2 M" [" m w$ C, k
- socket.onopen = function(){( ?3 i' _, q" G9 C; B2 I. E/ f
- draw();* D; _0 d& {+ a4 k3 p7 I' _8 z
- }
3 c8 [4 J' h' l9 ]) v+ U - 3 ]9 p) p4 Y9 E, m
- var draw = function(){
# y( ?+ ]" T2 b! w' m' n - try{ t8 N9 ]7 M% v
- backcontext.drawImage(video,0,0, back.width, back.height);' ]2 D! ~4 B# I, B& t9 u" L
- }catch(e){
: {6 \' C8 z2 {0 s: [* P - if (e.name == "NS_ERROR_NOT_AVAILABLE") {1 a" ?* t# t$ A0 D1 T6 {
- return setTimeout(draw, 100);. \* b6 T& I) |! {; V7 [
- } else {5 w% a8 G; x. _- Z5 C; v3 c
- throw e;
4 f' F9 g" ^" ~0 q% K - }" N. V: n3 _- T7 G' F* Q
- }$ }. B j9 a$ s# b `
- if(video.src){! W! g; i( G# \9 g$ R; S% ^
- socket.send(back.toDataURL("image/jpeg", 0.5));* S0 m. I6 C1 o) Q1 E/ D
- }
# B6 j& p$ _. q' T) | - setTimeout(draw, 100);
% O- V3 f, m1 y2 C0 k - }$ N6 L6 K: [$ \' ^
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||& ~3 ?/ I6 M) [7 w& \9 H
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
: N' H9 ?/ l/ Q1 W - navigator.getUserMedia({video:true, audio:false}, success, console.log);
& T3 V# V# @0 D - </script>
复制代码- php2 G1 H/ s& H0 G
- / o# j$ p. d0 a t# p5 O& Y. V: N
- $server = new swoole_websocket_server("0.0.0.0", 9502);
" ^" z5 E3 p( Z# g1 Y - ) R( s& m( j. B/ z# q' q1 \
- $server->on('open', function (swoole_websocket_server $server, $request) {, k4 p# B8 O; _2 @7 J0 S1 b
. N' y' h6 A" @+ V# [+ t5 {- echo "新用户id:{$request->fd}加入了\n";9 `3 N3 B+ S+ H! ~4 H* n8 n7 l/ e
- // echo "server: handshake success with fd{$request->fd}\n";/ T; C$ }1 o2 R( r* i/ M* B
- });
- z1 I6 [9 M/ o2 j: a
" P# a1 L9 }* ~8 |5 V- $server->on('message', function (swoole_websocket_server $server, $frame) {+ |# t4 n5 v' `0 {% ^1 X8 U# w
8 q! y# M/ n1 ^$ e" i- //循环所有数据: v& H, f: s: j$ ?
- foreach($server->connections as $fd) {
# O8 X# J) o/ [) v) B - //返回数据
0 q" b# p- m8 @8 p: Q - $server->push($fd, $frame->data);: g( V0 g1 ?+ j
- }
% L) n% k& r& z - " U/ D5 ]- _; k/ \* e( {
- });. }6 Q2 P+ I. s, h
- + m2 J# ?) v2 ~: [4 W
- $server->on('close', function ($ser, $fd) {! f2 s3 D' W3 ^# b/ L( ]
- echo "用户id: {$fd} 退出\n";; i6 o" [; T/ G; L7 M
- });
+ X, P! G6 m1 ]' N7 t" x
3 ] L v7 r9 {: M( ~9 C- $server->start();
复制代码 b8 E3 Q+ g! Z) X& f# P a* Q
9 J+ h- W; J' u3 O8 x4 G) ?% r l! I
" X* ]0 v4 ?9 w# h9 s
8 `8 s, f' p) C( d9 [. }
9 j6 R9 ?$ ]* U
! ~3 Z$ S# L9 }! G/ H6 h; V1 v6 J+ Q/ W
) [0 p. J5 c$ `3 k! E
% l3 E6 C9 v( k. w& C5 n( L$ T p' @( l& L: B
! F9 m2 A3 `" c$ v
|
|