본문 바로가기
개발환경/미분류

웹캠으로 RTSP 송출하고 MediaMTX로 스트림 서버 구성하는 방법

by codingwalks 2024. 9. 24.
반응형

안녕하세요. 코딩산책입니다.

컴퓨터 비전이나 영상처리를 학습하다보면 실시간 영상 스트리밍을 요구하는 경우가 발생합니다. 특히, 감시 카메라, 실시간 방송, 원격 모니터링 등 여러 목적으로 RTSP(Real-Time Streaming Protocol)를 사용합니다. 추가적으로, 서버 역할을 할 소프트웨어가 필요한데, MedaiMTX는 경량의 RTSP 서버로써 설치와 사용이 간단하면서도 안정적으로 스트림을 관리할 수 있습니다. 이 글에서는 MediaMTX를 활용해 웹캠 RTSP 스트림을 송출하는 방법과 웹캠에서 송출된 영상을 클라이언트가 접속해 볼 수 있도록 설정하는 방법을 단계별로 설명합니다. Linux와 Windows 환경 모두에서 구현 방법을 다루니, 자신의 환경에 맞게 참고하시면 됩니다.

 

1. RTSP란 무엇인가?

RTSP는 실시간 미디어 스트리밍을 제어하기 위해 사용되는 네트워크 프로토콜입니다. 이를 통해 비디오, 오디오를 포함한 멀티미디어 스트리밍을 제어할 수 있습니다. RTSP는 서버와 클라이언트 간의 스트림을 쉽게 제어할 수 있어, 감시 시스템, 미디어 서버 등에서 널리 사용됩니다.

 

2. MediaMTX란?

MediaMTX는 Go 언어로 개발된 오픈 소스 RTSP 서버로, 기존에 rtsp-simple-server라는 이름으로 알려져 있었습니다. 경량의 RTSP 서버이지만 RTSP, RTMP, HLS 스트리밍을 지원하며, 웹캠 등에서 실시간 비디오 스트림을 관리할 수 있습니다.

주요 기능:

RTSP 및 RTMP 프로토콜 지원
HLS를 통한 웹 기반 스트리밍 지원
FFmpeg와 연동하여 비디오 송출 가능
클라이언트가 RTSP 스트림에 접속하여 실시간 영상 시청

 

3. 준비물

  • 웹캠
  • FFmpeg (웹캠 스트림 송출용)
  • MediaMTX RTSP 서버
  • Linux 또는 Windows PC
  • 네트워크 연결

 

4. MediaMTX 서버 설치

4.1 Windows에서 MediaMTX 설치

1. MediaMTX GitHub 페이지에서 최신 릴리스를 다운로드합니다. (v1.9.1 버전을 기준으로 설명)

 

GitHub - bluenviron/mediamtx: Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read,

Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams. - bluenviron/mediamtx

github.com

2. 압축을 풀고 실행 파일(mediamtx.exe)을 명령 프롬프트에서 실행하여 서버를 시작합니다.

C:\Users\codingwalks\Downloads\mediamtx_v1.9.1_windows_amd64>mediamtx.exe
2024/09/24 14:33:54 INF MediaMTX v1.9.1
2024/09/24 14:33:54 INF configuration loaded from C:\Users\codingwalks\Downloads\mediamtx_v1.9.1_windows_amd64\mediamtx.yml
2024/09/24 14:33:54 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2024/09/24 14:33:54 INF [RTMP] listener opened on :1935
2024/09/24 14:33:54 INF [HLS] listener opened on :8888
2024/09/24 14:33:54 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2024/09/24 14:33:54 INF [SRT] listener opened on :8890 (UDP)

4.2 Linux에서 MediaMTX 설치

1. 먼저, 터미널을 열고 MediaMTX를 설치합니다.

wget https://github.com/bluenviron/mediamtx/releases/download/v1.9.1/mediamtx_v1.9.1_linux_amd64.tar.gz
tar -xzf mediamtx_v1.9.1_linux_amd64.tar.gz
cd mediamtx_linux_amd64
sudo ./mediamtx

서버가 실행되면, MediaMTX는 기본적으로 8554번 포트에서 RTSP 스트림을 관리합니다.

 

5. MediaMTX 설정

MediaMTX는 매우 기본적인 설정만으로도 동작하지만, 설정 파일을 통해 세부 설정을 커스터마이즈할 수 있습니다. 기본 설정 파일은 mediamtx.yml로, MediaMTX가 실행되는 폴더에 위치합니다.

예시 설정 파일 (mediamtx.yml):

rtspAddress: 8554
rtmpAddress: 1935
hls: yes
hlsSegmentCount: 7
hlsSegmentDuration: 6s
hlsSegmentMaxSize: 50M

 

RTSP 포트를 8554로 설정
RTMP 포트를 1935로 설정
HLS 스트리밍을 활성화하고 7개의 세그먼트를 유지하며, 각 세그먼트의 길이를 6초로 설정

 

6. FFmpeg를 이용해 웹캠을 MediaMTX로 송출

FFmpeg를 사용하여 웹캠에서 직접 MediaMTX 서버로 실시간 스트림을 송출할 수 있습니다. FFmpeg는 다양한 플랫폼에서 작동하므로 Windows와 Linux 모두에 적용됩니다.

6.1 FFmpeg 설치 (Windows)

1. FFmpeg 공식 웹사이트에서 Windows용 FFmpeg를 다운로드합니다. 저자는 Windows builds from gyan.dev에서 ffmpeg-release-full.7z을 다운로드하여 사용하였다.

FFmpeg 공식 홈페이지

 

Download FFmpeg

If you find FFmpeg useful, you are welcome to contribute by donating. More downloading options Git Repositories Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available. Release Verification All FFmpe

ffmpeg.org

ffmpeg-release-full.7z 다운로드

 

Builds - CODEX FFMPEG @ gyan.dev

FFmpeg is a widely-used cross-platform multimedia framework which can process almost all common and many uncommon media formats. It has over 1000 internal components to capture, decode, encode, modify, combine, stream media, and it can make use of dozens o

www.gyan.dev


2. 다운로드 후 압축을 풀고, bin 폴더에 있는 ffmpeg.exe 파일의 경로를 환경 변수에 추가합니다.

  • 환경 변수 설정 방법:
    a. 내 PC → 속성 → 고급 시스템 설정 → 환경 변수로 이동
    b. 시스템 변수에서 Path를 선택하고 편집
    c. FFmpeg의 bin 폴더 경로를 추가하고 확인

FFmpeg가 설치되었는지 확인하려면 cmd(명령 프롬프트)에서 다음 명령을 입력합니다.

ffmpeg -version

 

6.2 웹캠 RTSP 스트림 시작 (Windows)

Windows 환경에서도 FFmpeg를 이용해 웹캠 영상을 RTSP로 송출할 수 있습니다. 먼저 연결된 웹캠 장치를 확인해야 합니다.

1. 웹캠을 확인하려면 아래의 명령어를 사용합니다.

ffmpeg.exe -list_devices true -f dshow -i dummy

 

2. 이제 웹캠을 RTSP로 송출하기 위한 FFmpeg 명령어를 실행합니다.

ffmpeg.exe -f dshow -i video="웹캠 장치 이름" -vcodec libx264 -f rtsp rtsp://[IP주소]:[포트]/stream
-f dshow : Windows에서 DirectShow를 통해 웹캠을 입력 받음
-i video="웹캠 장치 이름" : 장치 이름을 지정 (명령어에서 확인한 웹캠 이름 입력)
-vcodec libx264 : H.264 비디오 코덱을 사용하여 인코딩
-f rtsp : 출력 포맷을 RTSP로 지정
rtsp://[IP주소]:[포트]/stream : 송출할 RTSP 주소

6.3 FFmpeg 설치 (Linux)

sudo apt update
sudo apt install ffmpeg

6.4 웹캠 RTSP 스트림 시작 (Linux)

FFmpeg로 웹캠을 RTSP로 송출하려면 웹캠 장치 파일을 확인한 후 송출 명령어를 실행합니다.

ffmpeg -f v4l2 -i /dev/video0 -vcodec libx264 -f rtsp rtsp://[IP주소]:[포트]/stream

6.5 추가 설정

• 비디오 해상도 조정 : 명령에 추가하여 해상도를 720p로 설정할 수 있습니다.

-s 1280x720

오디오 추가 : 웹캠의 마이크로부터 오디오를 캡처하려면 다음과 같은 옵션을 추가할 수 있습니다.

-f dshow -i audio="마이크 장치 이름"

 

7. 클라이언트에서 RTSP 스트림 확인하기

RTSP 스트림을 확인하려면 VLC 미디어 플레이어와 같은 소프트웨어를 사용할 수 있습니다.

1. https://www.videolan.org/에서 VLC Media Player를 다운로드 한 후에, VLC를 실행합니다.

VLC 공식 홈페이지

 

VLC: 공식 사이트 - 모든 OS의 무료 멀티미디어 솔루션! - VideoLAN

2024-06-10 VideoLAN and the VLC team are publishing the 3.0.21 release of VLC today, which is the 22nd update to VLC's 3.0 branch: it updates codecs, adds Super Resolution and VQ Enhancement filtering with AMD GPUs, NVIDIA TrueHDR to generate a HDR represe

www.videolan.org

2. 미디어 > 네트워크 스트림 열기로 이동한 후, rtsp://[IP주소]:[포트]/stream을 입력하여 재생합니다.

VLC를 통해 실시간 웹캠 스트림을 확인할 수 있습니다.

 

8. HLS 스트리밍 설정

MediaMTX는 RTSP뿐만 아니라 HLS(HTTP Live Streaming) 방식도 지원합니다. HLS를 사용하면 웹 브라우저에서 실시간 스트림을 확인할 수 있습니다.

8.1 HLS 활성화

mediamtx.yml 파일에서 HLS 옵션을 활성화합니다. (위의 4. MediaMTX 설정 참조)

MediaMTX가 HLS 스트리밍을 지원하면, 웹 브라우저에서 http://[IP주소]:8888/stream/index.m3u8와 같은 주소로 접속하여 실시간 스트림을 볼 수 있습니다.

 

9. 결론

이 글에서는 MediaMTX와 FFmpeg를 사용하여 Windows와 Linux 환경에서 웹캠을 RTSP로 송출하고, 이를 클라이언트에서 실시간으로 확인하는 방법을 설명했습니다. MediaMTX는 간단하지만 강력한 기능을 제공하며, RTSP 외에도 RTMP, HLS와 같은 다양한 스트리밍 프로토콜을 지원합니다. RTSP는 실시간 스트리밍을 위한 표준 프로토콜로, 감시카메라, 실시간방송, 원격모니터링 등 다양한 응용 프로그램에서 사용하기에 적합합니다. 네트워크 상태와 요구사항에 따라 설정을 최적화하여 안정적인 스트리밍 환경을 구축할 수 있습니다. 여러분의 환경에 맞게 설정을 조정하고 최적의 스트리밍 품질을 구축해보세요.

 

해당 포스트가 유용하셨다면 하단의 좋아요와 구독하기 부탁드립니다. ^^

Buy me a coffee

 

반응형