管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
主要使用 webstocket
7 o' C7 a! ]3 n上代码 前端 观看页面 - <script type="text/javascript">, ^$ a9 f+ q$ Q# v$ l
- var ws = new WebSocket('ws://192.168.0.150:9502');
) D0 P Q7 ]' v# |( V# f
* U+ y0 ]! s1 `7 a! `# t; F- ws.onopen = function() {
9 v e) ~7 b6 x6 [ - console.log("连接成功");
. D/ @) u! G& t) R G2 G# ?, B% o - };
! L+ I4 x+ T7 M - ws.onmessage = function(e) {
- c( Q! {' K4 \3 K) D" a; l# H* Z - console.log(e);
! A+ ]3 \( z/ J4 M+ v8 L' T - ' W, K- {- D2 N: ^, \' A) d' s. q
- var data = e.data;! x4 h, N7 c: H" |, @9 @' r
- document.getElementById('player').src=data;
5 N& g6 a+ C' h! a9 r4 [+ K - };, X1 ]5 _ U" j+ d# l7 C
- ws.onerror = function() {% W$ B- e: o) }/ A# f
- console.log("关闭连接");8 z% V* ]5 {- i7 h+ I, M
- };
' a* X7 s- [2 ^+ y. H$ p' A - </script>
复制代码录像页面 , N2 H" u; O! b( _" [' z& m
最好用火狐测试。 - <canvas id="output" style="display:none"></canvas>: r6 M9 ~' ~, o/ F* U2 R
' S3 P/ ^# N* c8 w! t/ {
" N$ \ g' q# k- w! `- M- ; `3 I8 O+ o* Y! M6 `
- <script type="text/javascript" charset="utf-8">
# O- [, `, L+ p, w7 s' Z) v
% x0 u5 _# f' l2 ?* m' p- & W7 T( }0 ?+ W2 p; e
- var socket = new WebSocket('ws://192.168.0.150:9502');( d* j. j, p8 q) C
- //socket.send("嗨我登陆了");
& s: Q, e/ f7 }4 a, h6 T$ I; g - 8 a* Z& |8 _; D0 A, O0 A
- var back = document.getElementById('output');. j' n8 S; I7 i4 z6 `" Q5 x; z1 s5 l0 ~
- var backcontext = back.getContext('2d');
% ]& ^' o3 l0 z2 ~, \& i - var video = document.getElementsByTagName('video')[0];/ K( e$ b% ^' v9 v* @
- $ |0 a: |* Z+ Y# O) k" s& x
- var success = function(stream){2 D- G e9 ?, N4 Z3 N! A
- video.src = window.URL.createObjectURL(stream);
5 H6 A+ M' ]2 C" F - }9 n# ~0 I% j: g! q
- ( k( K! l- K6 Q! H5 B3 U
- socket.onopen = function(){
9 E) @* j& z# h& c8 G- @7 p - draw();" G4 |- r: R1 h/ O3 I
- }" ^5 Y; `4 ?' h) {/ y
- ' j) `+ G% }( ?* f. v! W+ m
- var draw = function(){
3 r0 S" ]3 V1 C( f! P - try{8 @3 L7 H4 C. H
- backcontext.drawImage(video,0,0, back.width, back.height);1 D+ C: E1 ^! X G l* f* @" w
- }catch(e){
3 h# k. D4 X% O - if (e.name == "NS_ERROR_NOT_AVAILABLE") {* G2 O0 y9 v: ~8 h
- return setTimeout(draw, 100);
/ f! q+ V# n4 N" b8 g- n - } else { I. Y" I, ]: V
- throw e;
' y2 q0 s$ M2 D( I: T9 k - }
7 D3 s$ Z% N% |9 r - }' J, ~# S7 k# V' o0 K
- if(video.src){8 d3 U) h2 {/ y% l: W4 c4 E. _
- socket.send(back.toDataURL("image/jpeg", 0.5));0 q: U [3 q1 R: ~3 `
- }' i: o; o" S! N* c B
- setTimeout(draw, 100);! J3 W! H$ Q' I% q$ H
- }: o }7 `3 n8 W& N5 `, v2 u( y
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || p- h( n" w& P2 X) W9 R
- navigator.mozGetUserMedia || navigator.msGetUserMedia;; h) ^$ R, p# F* c& D p
- navigator.getUserMedia({video:true, audio:false}, success, console.log);
. l% p: G. U E( l - </script>
复制代码- php
5 c d4 u! p5 s8 r3 R - + r' w( u( N) A, t& \4 X. z
- $server = new swoole_websocket_server("0.0.0.0", 9502);
4 q8 u8 ~5 `1 n5 D3 P
. O! A6 c( U, n' K9 l9 A- t% }- $server->on('open', function (swoole_websocket_server $server, $request) {
' H/ n; ~9 f$ D3 `- ^- e
0 q) q0 a6 z7 S- echo "新用户id:{$request->fd}加入了\n";! E2 W3 ]& W. f0 {, L
- // echo "server: handshake success with fd{$request->fd}\n";
! V, g/ l5 {8 B - });
- ]/ m' q. m9 H' N1 M. s0 G
# B3 l! ]" d7 C) r- $server->on('message', function (swoole_websocket_server $server, $frame) {
) Y7 i8 w. p& M5 D1 Z" x, i - 3 D6 V8 l3 y0 K$ c! s( A; A
- //循环所有数据1 n q. n4 Z: x/ o- N
- foreach($server->connections as $fd) {8 t9 W1 A" C0 m3 Z/ a6 S
- //返回数据. t" U4 p z' O) t3 d/ K- ]7 y
- $server->push($fd, $frame->data);/ m, F( Z& x" R5 `" F" a$ }; m2 L* F
- }
! t' Q$ A# c1 Z& X' q4 y
# R% {8 l9 o: c& U: `- });
. `9 z% d1 V* L! X- t- d. e' T
/ _6 h5 o: b$ u8 j+ x4 f( @7 t/ W- $server->on('close', function ($ser, $fd) {
, N8 Y7 l: U3 _7 G0 u; c6 N - echo "用户id: {$fd} 退出\n";
$ h( f* U* m% G0 X) h2 N5 @! e - });/ q- X8 @, a! w* l& R
- - u2 F$ M6 L1 b9 N
- $server->start();
复制代码
- q& n8 [) }6 w! @% I& ~ w: d
" `/ |/ g. ?8 B9 G" y3 Q; ]- F7 p% f2 T' |8 A) L
/ B& v2 {; ?) h" u
M& A. E) a/ ^0 _2 e# b
1 u N: D$ X) b- i I. O
6 ?0 w0 Y: P8 f+ s7 H# v0 y. m6 a# J- G/ X9 r$ ]
/ L `) |: j. P+ X4 e) L6 f2 i
9 X/ N& e. F: b/ c; @5 l- E, q
2 l. ~( X5 H1 z0 E9 M5 z# w
9 P8 t9 w' M* P W+ e/ \, i |
|