管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket3 _. z$ ^8 a. a# k
上代码 前端 观看页面 - <script type="text/javascript">
' @% P4 ~( U( n6 i0 [% y - var ws = new WebSocket('ws://192.168.0.150:9502');
0 }' p: D- h4 G) j7 @ - 4 i) \. J/ P( [
- ws.onopen = function() {
9 e& ^- ~# ?2 T3 U - console.log("连接成功");6 D/ X2 v$ ]0 d% o& Y
- };
* O8 ^7 p8 \* O3 ?1 m' { - ws.onmessage = function(e) {
" Q- I; G; a- R; u+ Q! E0 P - console.log(e);3 b' u1 l% l0 r' p( V
5 d5 b7 ^ V% ~$ ?: H, o% O2 f5 R- var data = e.data;1 f5 ?; e. |( y- h- ?- r
- document.getElementById('player').src=data;5 h- V" s/ v: c+ E
- };3 }" O/ |0 ^/ e5 `1 i4 {
- ws.onerror = function() {7 m2 E* l4 f F0 e
- console.log("关闭连接");
5 S6 G1 S; Y% b - };
% E! C2 F8 b) t, } U2 T - </script>
复制代码录像页面
4 s- `3 ? e2 y7 r$ J最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>5 j! v. ~' @! W- b5 R1 v% G+ J
- * n' } U: m$ L
) k( _3 z5 A6 p% E# S- q
2 I# H; \, @& x: [. `- <script type="text/javascript" charset="utf-8">9 ~6 L% H" n* w( _7 O: n2 u
- % Q/ {6 m1 C3 K3 t: u/ Y
- ; B2 N. i- V, ?
- var socket = new WebSocket('ws://192.168.0.150:9502');" k5 \% z8 {% j3 }4 N; _; |' w* A
- //socket.send("嗨我登陆了");9 Y0 }$ r% R% O, `. a
9 k6 g9 L8 D* x) L8 p% f) D- i& j- var back = document.getElementById('output');
* N0 u. ^( Y! } - var backcontext = back.getContext('2d');2 f( I& I; d' z* q/ [5 }
- var video = document.getElementsByTagName('video')[0];7 b) J7 N4 Y- b
-
* D0 `6 h y2 p0 W H7 I1 r - var success = function(stream){* K( P ?( B+ T4 B+ u, r. J
- video.src = window.URL.createObjectURL(stream);
$ [' B& M" b7 }, x0 d8 _; U - }% {; A1 _9 w0 w* k
! ^2 a7 |/ @1 D6 ^3 R- socket.onopen = function(){. K" b5 o2 ~/ S% \7 {- C' r
- draw();2 L* A3 Q$ `2 A( R2 c# [
- }, A6 R F+ u( n4 @
- 2 D3 \1 T* [! Q5 G6 o# h0 X
- var draw = function(){4 ^ z5 y; L( z# b* t
- try{0 |+ L* C9 h( D, z& }! |1 `
- backcontext.drawImage(video,0,0, back.width, back.height);
; W5 U! [( y+ X$ h9 W+ F# A9 } - }catch(e){/ y' L" Z1 a- P$ l! b
- if (e.name == "NS_ERROR_NOT_AVAILABLE") {
7 G* m$ q7 n/ {2 U" e1 f - return setTimeout(draw, 100);3 r% ?' D( j' U# G
- } else {
5 _! Q7 q \0 o: B* [% C - throw e;1 k' y# n7 C N9 Z3 E
- }% G3 `( K5 M; J, v8 E
- }
. q/ ~+ O9 w% b, ` - if(video.src){
- A& D! ^6 P w, D, h( I! F, ]+ x - socket.send(back.toDataURL("image/jpeg", 0.5));7 M0 D5 ^, b i9 K, }$ v' x" R3 I6 G
- }, g7 M0 j) Z6 ~$ ?5 {
- setTimeout(draw, 100);' E3 b4 Y) w5 W E
- } A4 A" s; N L; x- k' S" T
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||6 d1 V2 a3 w% h" J5 r p
- navigator.mozGetUserMedia || navigator.msGetUserMedia;
, L( }7 N/ u* c% t& [ x, j - navigator.getUserMedia({video:true, audio:false}, success, console.log);
& u5 e9 @( V# }% ?0 z- Y; b# \) }! n - </script>
复制代码- php
6 t3 i3 e6 z" O. `$ f - 7 E' [* Y7 D3 r9 r, f1 {
- $server = new swoole_websocket_server("0.0.0.0", 9502);* U, [9 _8 [' N% @8 P, [+ @
! t# Z. x8 r% W, e7 B, E! l, K- $server->on('open', function (swoole_websocket_server $server, $request) {
7 @6 e, i W# |- q2 F
* \4 H6 y& K! A! g& R- echo "新用户id:{$request->fd}加入了\n";
# }8 P j# g+ c& \) a+ h - // echo "server: handshake success with fd{$request->fd}\n";0 h& o- N; ?. P2 y
- });
- O5 L. [8 n/ M' u4 j7 D( G3 r, M+ h - ! j0 @8 P. f! {( O2 S! H) n
- $server->on('message', function (swoole_websocket_server $server, $frame) {# _% T0 Y( }6 [1 O m5 e. R U+ `
1 s/ D& D7 q( U8 s4 D- //循环所有数据" i" t3 }* Y: \0 U
- foreach($server->connections as $fd) {
; U S; t8 _: O$ e - //返回数据1 Y; E3 @/ ^- k2 r% m k9 z
- $server->push($fd, $frame->data);
. N& X5 L. M4 k% `" J7 y& ~, E& o - }
; ]# x, N# E6 C# x' V& p - " U. G2 u; r( v2 ?+ c: m
- });
% y- I# L! h9 ~1 I/ k" J
5 J1 |% [+ M$ Z8 ~- $server->on('close', function ($ser, $fd) {
( j3 }* C5 V) A3 B+ I0 @. ] - echo "用户id: {$fd} 退出\n";
2 @6 n9 T7 N0 q8 r% ]" G - });
& F) F* c: s3 x- {. g. Y# M8 O2 o' z- j - 8 F6 V2 i3 i3 g4 f
- $server->start();
复制代码
0 j+ a* s* p) F! `! K i/ e( f1 a0 K% ^: n5 a% Y9 o
/ ?& w; ~; X: c# _+ _8 D. ]
/ v5 w) `8 \& }6 Q; J7 _& l
4 s/ D# ~4 Y8 }" H3 a+ T" p) N
* E* L0 s$ m* I5 M
* K2 d P, q1 ^$ m( o" V1 h, ]3 h
" H1 Y* O7 O3 [2 m. _& V$ D, H; {1 L0 B# h9 g0 z9 H* b x+ }3 H
I* q6 p- W1 C! P( g
: O, w" U, B' j! L+ {4 h
|
|