Browse Source

add link camera

features/camera
PhamY0601 1 year ago
parent
commit
bf6e8a2b8f
5 changed files with 24 additions and 38 deletions
  1. +2
    -1
      package.json
  2. +2
    -6
      src/app/modules/overview/camera-stream/camera-stream.component.html
  3. +4
    -21
      src/app/modules/overview/camera-stream/camera-stream.component.scss
  4. +13
    -9
      src/app/modules/overview/camera-stream/camera-stream.component.ts
  5. +3
    -1
      src/server/server.js

+ 2
- 1
package.json View File

"express": "^4.19.2", "express": "^4.19.2",
"express-ws": "^5.0.2", "express-ws": "^5.0.2",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"rtsp-relay": "^1.9.0",
"ngx-toastr": "^17.0.2",
"rtsp-relay": "^1.8.0",
"rxjs": "~7.8.0", "rxjs": "~7.8.0",
"rxjs-websockets": "^9.0.0", "rxjs-websockets": "^9.0.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",

+ 2
- 6
src/app/modules/overview/camera-stream/camera-stream.component.html View File

<h3>Camera Stream</h3>
<canvas #videoPlayer></canvas>

<!--<video width="700" controls style="display: block; margin-left: auto; margin-right: auto">-->
<!-- <source src="assets/video/video.mp4" type="video/mp4">-->
<!--</video>-->
<h3 style="text-align: center">Camera Stream</h3>
<canvas class="video" #videoPlayer></canvas>

+ 4
- 21
src/app/modules/overview/camera-stream/camera-stream.component.scss View File

.tooltip {
position: relative;
display: inline-block;
}

.tooltip .tooltiptext {
visibility: hidden;
width: 300px;
padding: 10px;
background-color: #fff;
color: black;
border-radius: 6px;
position: absolute;
z-index: 1;
bottom: 100%;
left: 50%;
margin-left: -60px;
}

.tooltip:hover .tooltiptext {
visibility: visible;
.video {
width: 78% !important;
display: block;
margin: 0 auto
} }

+ 13
- 9
src/app/modules/overview/camera-stream/camera-stream.component.ts View File

@ViewChild('videoPlayer') @ViewChild('videoPlayer')
videoPlayer?: ElementRef<HTMLCanvasElement>; videoPlayer?: ElementRef<HTMLCanvasElement>;


ngOnInit() {
}
constructor(private el: ElementRef, private renderer: Renderer2) {} constructor(private el: ElementRef, private renderer: Renderer2) {}
async ngAfterViewInit() {
this.player = await loadPlayer({
url: 'ws://localhost:8080/stream',
canvas: this.videoPlayer!.nativeElement,


onDisconnect: () => console.log('Connection lost!'),
});
ngOnInit() {
}


console.log('Connected!', this.player);
async ngAfterViewInit() {
const connect = async () => {
this.player = await loadPlayer({
url: 'ws://localhost:8080/stream',
canvas: this.videoPlayer!.nativeElement,
onDisconnect: () => {
setTimeout(connect, 5000); // reconnect after 5 seconds
},
});
};
connect();
} }





+ 3
- 1
src/server/server.js View File

const { proxy, scriptUrl } = require('rtsp-relay')(app); const { proxy, scriptUrl } = require('rtsp-relay')(app);


const port = 8080; const port = 8080;
const urlCamera = 'rtsp://admin:[email protected]:88/cam/realmonitor?channel=1&subtype=0';


app.ws('/api/stream/:cameraIP', (ws, req) => app.ws('/api/stream/:cameraIP', (ws, req) =>
proxy({ proxy({
); );


const handler = proxy({ const handler = proxy({
url: 'rtsp://admin:hd543211@@xuanphuong32.dyndns.org:8001/cam/realmonitor?channel=7&subtype=0',
url: urlCamera,
verbose: false, verbose: false,
transport: 'tcp'
}); });





Loading…
Cancel
Save