Project/모니터링 시스템

[모니터링 시스템 구축] WebRTC Video 스트리밍 with Ant Media Server

dohyeon2 2022. 12. 8. 18:21

오늘은 WebRTC 방식을 이용해 웹캠을 실시간으로 streaming 할 수 있는 방법을 정리해보려 합니다.

WebRTC의 기본적인 개념이나 자세한 설명은 다른 블로그에 많으니 여기에서는 설치법만 다루겠습니다. 

 

Ant Media Server는 HLS 또는 CMAF를 사용하여 ~0.5초 대기 시간 또는 낮은 대기 시간으로 WebRTC 기술을 사용하여 적응형 초저 대기 시간 스트리밍을 제공하는 스트리밍 엔진 소프트웨어입니다. 저는 해당 소프트웨어를 이용하여 video stream을 받고, 중개하여 최종적으로 외부에서 다른곳에 설치된 webcam에 접근하는 방법을 소개합니다. 

 

Ant Media Server는 enterprise version과 community 버전이 존재합니다. 저는 무료로 공개된 community version을 이용해 stream 중개서버를 올려보겠습니다. 


1. Ant Media Server community version 설치

(Ant Media Server는 Linux, mac 두가지 os만 지원합니다.)

wget https://github.com/ant-media/Ant-Media-Server/releases/download/ams-v2.5.1/ant-media-server-community-2.5.1.zip

 

<참고>

https://github.com/ant-media/Ant-Media-Server/releases

 

Releases · ant-media/Ant-Media-Server

Ant Media Server is a streaming engine software that provides adaptive, ultra low latency streaming by using WebRTC technology with ~0.5 seconds latency. Ant Media Server is highly scalable both ho...

github.com

 

2. 터미널을 열고 Ant Media Server 설치한 디렉토리로 이동

cd path/to/where/ant-media-server....zip

 

3. 설치 스크립트 다운로드

wget https://raw.githubusercontent.com/ant-media/Scripts/master/install_ant-media-server.sh && chmod 755 install_ant-media-server.sh

 

4. 설치 스크립트 실행

sudo ./install_ant-media-server.sh -i <ANT_MEDIA_SERVER_ZIP_FILE>

 

5. 설치 및 서비스가 제대로 실행되었는지 확인

sudo service antmedia status # 실행상태 확인 
sudo service antmedia stop # 실행 중지
sudo service antmedia start # 시작

 

6. Ant Media Server 설치 디렉토리로 이동

cd /usr/local/antmedia

 

7. SSL 설치 스크립트 실행

SSL 설정은 마이크 및 카메라에 대한 액세스 권한을 요청할 때 필수 작업입니다. 또한 Chrome에서 WebRTC 및 WebSocket 애플리케이션을 실행하려면 HTTPS 및 WSS(WebSocket Secure)를 활성화해야 합니다.

(이 단계를 실행하기 전에, 서버가 Public IP이고 도메인이 해당 Public IP 주소에 할당되어 있는지 확인 후 진행해 주세요.

Public Ip가 아니고, 도메인이 해당주소에 할당되어 있지 않으면 실행이 불가능합니다.)

sudo ./enable_ssl.sh -d {DOMAIN_NAME}

 

8. 서버포트 열기

아래에 해당하는 포트를 열어주세요. v2.4.3이상에서 UDP 50000~60000은 default로 세팅되어 있으니 딱히 건드리지 않아도 상관없습니다.

  • TCP: 1935(RTMP)
  • TCP: 5080(HTTP)
  • TCP: 5443(HTTPS)
  • UDP: 4200(SRT)
  • UDP: 50000-60000(WebRTC. 이 기본 범위는 v2.4.3 이상에서 50000-60000입니다. 2.4.3 이전에는 기본값이 5000-65000이었습니다.
  • TCP: 5000(내부 네트워크 통신을 위해 클러스터 모드에서만 이 포트를 열어야 합니다. 공용으로 열면 안 됩니다.)

9. 기본 http(80), https(443) 포트를 5080 및 5443으로 포트포워딩

일반적으로 포트 포워딩은 편의를 위해 기본 포트를 서버의 포트로 포워딩하는 데 사용됩니다. 예를 들어 80에서 들어오는 모든 데이터를 5080으로 전달해 보겠습니다.

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 5080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 5443

위의 명령을 실행한 후 80으로 가는 HTTP 요청은 5080으로 전달됩니다. 443으로 가는 HTTP 요청은 5443으로 전달됩니다.

SSL을 활성화하면 포트 80을 어떤 프로세스에서도 사용하거나 다른 포트로 전달해서는 안 됩니다.

 

10. 포트포워딩 지속설정

포트포워딩은 컴퓨터를 재부팅하면 초기화 됩니다. 재부팅 후에도 포트포워딩이 유지되도록 아래 명령어를 입력해주세요.

sudo apt-get install iptables-persistent
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

 

11. Ant Media Server를 설치한 PC가 아닌 다른 로컬 PC에서 카메라 Stream

저의 경우 window10이 깔려있는 제 개인 desktop에서 스트리밍을 테스트하였습니다. 

 

먼저 아래 주소로 접속해주세요. 초기 진입시 계정을 만들어야합니다. 

https://your_domain_name:5443/WebRTCApp 

위와같이 현재 로컬PC에 연결된 webcam 영상이 보이실텐데, 원하는 이름을 적고 Start Publishing을 클릭하면 끝입니다.

이렇게하면 제 로컬PC에 연결된 webcam 영상이 Ant Media Server(중개서버)로 보내집니다.

 

12.  웹캠 스트리밍 영상 외부접속 테스트 

아래 주소로 접속하여 테스트! 

https://your-domain:5443/WebRTCApp/play.html?name=webcam1&playOrder=hls

성공~!!

(Ant Media Server(중개서버) community version의 경우 받아온 스트리밍 영상을 HLS 방식으로 재생해줍니다(WebRTC 방식은 enterprise version만 지원 ㅠ,ㅠ))

 

 

결과적으로 다음과 같이 프로토콜이 진행됩니다.