JavaScript를 사용하여 웹브라우저에서 RTSP 영상을 재생하는 예제입니다.
2021. 04. 04 최초작성
2023. 11. 07 검증
2024. 7. 19 검증
1. 아래 링크에서 윈도우 버전 ffmpeg-release-full.7z를 다운로드합니다.
https://www.gyan.dev/ffmpeg/builds/
압축을 풀어 ffmpeg-7.0-full_build 폴더를 ffmpeg라고 이름을 바꿔서 c:\에 복사해두고 진행합니다. 폴더 이름 중 7.0 부분은 바뀔 수 있습니다.
C:\ffmpeg\bin를 시스템 PATH에 추가합니다.
2. 아래 링크에서 윈도우용 Node.js 설치 파일을 다운로드 받아 설치합니다.
https://nodejs.org/en/download/prebuilt-installer
옵션 변경없이 설치를 진행합니다.
3. 다음 두 파일을 적당한 곳에 생성합니다.
index.js
영상 크기로 width와 height를 수정했습니다.
const Stream = require('node-rtsp-stream'); const streamUrl = "rtsp://210.99.70.120:1935/live/cctv001.stream"; stream = new Stream({ name: 'foscam_stream', streamUrl: streamUrl, wsPort: 9999, width: 640, height: 480 }); |
test_client.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Client</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jsmpeg/0.1/jsmpg.js"></script> </head> <body> <canvas></canvas> <script> var client = new WebSocket('ws://localhost:9999'); var canvas = document.querySelector('canvas'); var player = new jsmpeg(client, { canvas: canvas }); </script> </body> </html> |
4. 명령프롬프트에서 앞에서 파일 2개를 생성한 폴더로 이동합니다.
초기화를 하기 위해 다음 명령을 실행한 후, 엔터만 계속 누르면 됩니다.
npm init
다음 두 패키지를 설치합니다.
npm install node-rtsp-stream
npm install ws
현재 폴더의 \node_modules\node-rtsp-stream에 있는 mpeg1muxer.js 파일을 수정합니다.
수정전
this.spawnOptions = [ "-i", this.url, '-f', 'mpegts', '-codec:v', 'mpeg1video', // additional ffmpeg options go here ...this.additionalFlags, '-' ] |
수정 후
this.spawnOptions = [ "-rtsp_transport", "tcp", "-i", this.url, '-f', 'mpeg1video', '-b:v', '1000k', '-maxrate', '1000k', '-bufsize', '1000k', '-an', '-r', '24', // additional ffmpeg options go here ...this.additionalFlags, '-' ] |
5. 자바스크립트를 실행합니다.
node index.js
문제없다면 마지막 줄이 다음처럼 보여야 합니다.
frame= 356 fps= 25 q=2.0 size= 1169kB time=00:00:14.75 bitrate= 649.4kbits/s dup=5 drop=4 speed=1.05x
6. 웹브라우저에서 test_client.html 파일을 엽니다. 영상이 플레이 됩니다.
참고
https://github.com/chpmrc/foscam_streamer
'WEB > javascript' 카테고리의 다른 글
Visual Studio Code 사용하는 JavaScript 개발 환경 만들기 (0) | 2023.10.20 |
---|
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!