프로젝트 정보
Language: Go
GitHub: https://github.com/deepch/RTSPtoWeb (MIT License)
API Docs: https://github.com/deepch/RTSPtoWeb/blob/master/docs/api.md
Docker Image: ghcr.io/deepch/rtsptoweb:latest
주요 기능
- RTSP URL을 통해 Stream을 추가하면 HLS 스트리밍 엔드포인트를 통해 클라이언트에서 스트리밍 가능
- 다중 채널 지원
- Admin UI
- ID/PW, Token 인증 방식 지원
- HTTPS 지원
Docker로 서버 띄워보기
$ docker run -d --name rtsp-to-web -p 8083:8083 ghcr.io/deepch/rtsptoweb:latest
컨테이너 실행 후 http://127.0.0.1:8083 으로 관리자 UI 접속하면 아래와 같은 화면 볼 수 있음
테스트 RTSP URL으로 스트리밍 확인
공공데이터 포탈 접속하여 RTSP URL 가져옴 (https://www.data.go.kr/data/15063717/fileData.do)
CCTV 중 하나 선택하여 RTSP URL 복사 후 관리자 UI에서 우측 상단 Add Stream
위와 같이 정보 입력 후 Save stream 버튼 눌러 스트림 저장
위와 같이 스트림이 추가되면 MSE, HLS 버튼을 눌러 스트리밍이 되는지 확인 (처음에 몇 초 걸림)
React에서 스트리밍 해보기
React 프로젝트 생성 및 모듈 설치
$ npx create-react-app rtsp-streaming
$ npm i react-hls-player
방금 추가 한 StreamID 확인
$ curl http://demo:demo@127.0.0.1:8083/streams
위와 같이 서버에 요청을 보내면 Stream 정보를 받을 수 있음
{
"status": 1,
"payload": {
"4b4d73f8-89e2-4995-b5f9-47d5d1edd13e": { // StreamID
"channels": {
"0": { // Channel ID
"on_demand": true,
"status": 1,
"url": "rtsp://210.99.70.120:1935/live/cctv003.stream"
}
},
"name": "역말 오거리"
}
}
}
App.js 구현
import ReactHlsPlayer from "react-hls-player";
function App() {
const streamId = '4b4d73f8-89e2-4995-b5f9-47d5d1edd13e';
const chId = '0';
return (
<div
style={{
width: "100%",
height: "100%"
}}
>
<ReactHlsPlayer
src={`http://127.0.0.1:8083/stream/${streamId}/channel/${chId}/hls/live/index.m3u8`}
controls={true}
autoPlay={false}
width={640}
height={480}
/>
</div>
)
}
export default App;
React 앱을 실행한 후 localhost:3000으로 접속하면 다음과 같은 화면을 볼 수 있음
API Docs를 참고하여 React에서 직접 Stream을 추가/수정/삭제할 수 있고, 스트리밍 할 수 있음
'기타' 카테고리의 다른 글
SOP (Same-Origin Policy), CORS (Cross-Origin Resource Sharing) 정리 (0) | 2024.02.28 |
---|---|
Apple Silicon Mac에서 NVM 사용해 Node v14 설치 (1) | 2023.12.07 |
[AWS] Mac AWS-CLI 설치 및 EKS Cluster에 kubectl 명령어 사용하기 (0) | 2023.11.28 |
Mac에서 VSCode Prettier 사용하기 (0) | 2023.11.08 |
댓글