rtsp 웹 스트리밍

rtsp는 현재 브라우저 보안정책 상 바로 띄울수 없다.

그래서 웹으로 rtsp 화면을 송출하려면 중간에 변환을 한 후 띄워야하는데,

그 중 찾은 방법이 https://github.com/mpromonet/webrtc-streamer의 golang으로 rtsp를 webRTC로 변환하여 gin 프레임워크로 웹서버를 실행해 송출하는 방법이다.

1. Go 1.18 설치

  • environment : ubuntu 20.04.4 LTS

1.1. go 1.18 패키지 다운로드

$ wget https://golang.org/dl/go1.18.linux-amd64.tar.gz

1.2. 압축 해제

$ sudo tar -xvf go1.18.linux-amd64.tar.gz

1.3. 디렉토리 및 파일 이동

$ sudo mv go /usr/local

1.4. 환경변수 등록

$ sudo vi ~/.profile

# GOROOT - Go 패키지 경로
export GOROOT=/usr/local/go

# GOPATH - Go 워크스페이스
export GOPATH=$HOME/go-workspace

# PATH 설정
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

:wq

# .profile 파일 적용
$ source ~/.profile

1.5. go 버전 확인

$ go version
> go version go1.18 linux/amd64

2. 실행

2.1. git clone

$ git clone https://github.com/deepch/RTSPtoWebRTC
$ cd RTSPtoWebRTC

2.2. rtsp 설정

config.json에서 rtsp를 설정해준다.

$ vi config.json

{
  "server": {
    "http_port": ":8083",
    "ice_servers": ["stun:stun.l.google.com:19302"]
  },
  "streams": {
    "H264_AAC": {
      "on_demand": false,
      "disable_audio": true,
      "url": "rtsp://id:pw@rtsp_address" // 이 부분 설정
    }
  }
}

2.3. 실행

첫 실행은 필요한 모듈들을 설치한 후에 실행된다.

$ GO111MODULE=on go run *.go
// or
$ go run *.go

localhost:8083으로 접속

실행 결과

다른 방법들

  • rtsp ⇒ obs studio로 가상 카메라 띄우기
  • rtsp ⇒ hls
  • rtsp를 웹으로 띄우는 방법 중 하나인 hls는 비디오가 .ts 형태로 ml5js에서 비디오를 읽어올 수 없었다.