1.시스템&인프라/스트리밍

[MistServer]3.MistServer 스트리밍 이해하기: Inputs,Outputs,Push,Recording

쿼드큐브 2025. 4. 11. 08:46
728x90

MistServer는 RTMP, SRT, HLS 등 다양한 입력과 출력 방식을 지원하는 고성능 스트리밍 서버입니다.  MistServer는 다양한 설정을 통해 입력(Input), 스트림 관리, 출력(Output), 푸시(Push) 및 녹화 기능을 사용할 수 있습니다.

 

MistServer 스트리밍 이해하기: Inputs, Outputs, Push, Recording

 

목차

1. MistServer의  기본 구조:Inputs, Stream, Outputs

2. Inputs

3. Outputs

4. Push 및 Recording

5. 오디오/비디오 지원 목록

관련 글 링크

 

 

1. MistServer의 기본 구조: Inputs, Stream, Outputs

MistServer는 미디어 데이터를 처리하는 과정을 크게 세 가지 영역으로 구분합니다.

이는 데이터의 흐름을 직관적으로 파악하고 각 단계별 설정을 용이하게 합니다.

  • Inputs (입력): 외부로부터 미디어 데이터를 MistServer로 수신하는 영역입니다. 다양한 방식의 입력을 지원하여 여러 종류의 소스에서 데이터를 받아들일 수 있습니다.
  • Stream (스트림): Inputs 영역을 통해 수신된 데이터는 Stream 영역에서 관리됩니다. 필요에 따라 코덱 변환, 트랜스먹싱 등 스트림 프로세싱을 설정하여 다양한 환경에 최적화된 형태로 가공할 수 있습니다.
  • Outputs (출력): 처리된 스트림 데이터를 외부로 전송하거나 저장하는 영역입니다. 다양한 프로토콜과 방식을 지원하여 여러 대상에게 데이터를 제공할 수 있습니다. 또한, VLC Player와 같은 일반적인 미디어 플레이어를 통해 MistServer에 접속하여 스트림을 직접 재생할 수도 있습니다.

 

2. Inputs

세부내용은 https://docs.mistserver.org/mistserver/inputs/ 을 참조하세요

MistServer는 다양한 입력 방식을 지원하여 유연한 데이터 수집 환경을 제공합니다.

◆ File Inputs

로컬 파일 시스템에 저장된 미디어 파일을 스트림으로 제공합니다.

입력방식 URL 형식 설명
File Linux/MacOS: /PATH/FILE
Windows: /cygdrive/DRIVE/PATH/FILE
지정된 파일을 스트림으로 사용
(지원 형식: DTSC, FLV, MP3 등)
Folder Linux/MacOS: /PATH/
Windows: /cygdrive/DRIVE/PATH/
폴더 내 모든 인식된 파일을 스트림으로 제공

 

◆ Push Inputs

외부 장비나 서버에서 MistServer로 미디어 데이터를 푸시(전송)하는 방식입니다.

입력방식 URL 형식 설명
RTMP push://(IP)(@PASSWORD) 허용된 IP에서 RTMP 푸시
SRT push://(IP) 허용된 IP에서 SRT 푸시
RTSP push://(IP)(@PASSWORD) 허용된 IP에서 RTSP 푸시 
TS
(UDP 멀티캐스트)
tsudp://(IP):PORT(/INTERFACE) 특정 IP, 포트, 네트워크 인터페이스를 통해 TS 데이터 수신
(멀티캐스트 지원)

 

◆ Pull Inputs

MistServer가 외부의 특정 URL로부터 미디어 데이터를 가져오는(풀) 방식입니다.

입력방식 URL 형식 설명
DTSC dtsc://MISTSERVER_IP:PORT/(STREAMNAME) 다른 MistServer에서 DTSC 스트림을 가져옴
(기본 포트 4200)
HLS http://URL/TO/STREAM.m3u8 HLS 스트림을 가져오기 위한 URL
RTSP rtsp://(USER:PASSWORD@)IP(:PORT)/path 인증 정보를 포함해 RTSP 스트림을 가져옴

 

◆ Push Inputs 허용 IP 설정

Push Inputs 방식에서 특정 IP 주소 또는 IP 대역을 지정하여 데이터 수신을 허용할 수 있습니다.

빈 값으로 설정하면 모든 IP 주소로부터의 연결을 허용합니다.

예1) push://192.168.1.100
   - 192.168.1.100 IP에서 MistServer로 RTSP 스트림을 푸시 가능

예2) push://
   -모든 IP에서 MistServer로 RTSP 스트림을 푸시 가능 (화이트리스트 미설정)

예3) push://192.168.1.0/24
   - 192.168.1.1 ~ 192.168.1.255 범위의 IP에서 푸시 가능

 

3. Outputs

MistServer의 Outputs 영역은 스트리밍된 데이터를 다양한 방식으로 제공하고 활용할 수 있도록 지원합니다.

일반적으로 시청자(Viewer)는 특정 출력 방식에 연결하여 스트림을 수신합니다.

프로토콜 접속 URL 예시
SDP (Session Description Protocol) http://172.18.89.20:8080/camera.sdp
WebM (VP8/VP9 기반 스트리밍) http://172.18.89.20:8080/camera.webm
RTMP (Real-Time Messaging Protocol) rtmp://172.18.89.20/play/camera
RTSP (Real-Time Streaming Protocol) rtsp://172.18.89.20:5554/camera
DTSC (Direct Transport Stream Control) dtsc://172.18.89.20/camera
SRT (Secure Reliable Transport) srt://172.18.89.20/streamid=camera
MP4 (WebSocket 기반 스트리밍) ws://172.18.89.20:8080/camera.mp4
MP4 (HTTP 기반 스트리밍) http://172.18.89.20:8080/camera.mp4
HLS (TS - HTTP Live Streaming) http://172.18.89.20:8080/hls/camera/index.m3u8
Smooth Streaming (MS-SSTR) http://172.18.89.20:8080/cmaf/camera/Manifest
HLS (CMAF - Common Media Application Format) http://172.18.89.20:8080/cmaf/camera/index.m3u8
DASH (Dynamic Adaptive Streaming over HTTP) http://172.18.89.20:8080/cmaf/camera/index.mpd
WebRTC (WHEP - WebRTC HTTP Egress Protocol) http://172.18.89.20:8080/webrtc/camera
WebRTC (WebSocket 기반 스트리밍) ws://172.18.89.20:8080/webrtc/camera

출처: https://www.mistserver .org/specifications

 

4. Push 및 Recording

MistServer는 스트림 데이터를 다른 서버로 전송(푸시)하거나 로컬 디스크에 녹화(저장)하는 강력한 기능을 제공합니다.

특히, 자동 녹화 및 자동 푸시 기능을 통해 스트림이 활성화될 때 원하는 설정을 자동으로 실행할 수 있어 효율적인 스트림 관리가 가능합니다.

 

  • 일반 푸시 (Regular Push): 스트림 연결이 유지되는 동안 일회성으로 데이터를 전송하거나 녹화합니다. 연결이 끊어지면 작업이 종료됩니다.
  • 자동 푸시 (Automatic Push): 스트림이 시작될 때 자동으로 설정된 푸시 또는 녹화 작업을 실행합니다. 실패 시 자동 재시도 기능을 지원하여 안정적인 데이터 전송 및 저장을 보장합니다. 변수 활용, 스케줄링 등 다양한 조건을 설정하여 더욱 정밀한 제어가 가능합니다.

◆ 출력 URL(Target URL) 예

푸시 또는 녹화 작업을 수행할 대상 URL 형식을 정의합니다

출력형식  Target URL 형식
FLV 파일 저장 /경로/파일명.flv
TS 파일 저장 /경로/파일명.ts
WAV 오디오 파일 저장 /경로/파일명.wav
RTMP 스트리밍 rtmp://호스트:포트/애플리케이션/스트림명
TS UDP 스트리밍 tsudp://[호스트]:포트[/인터페이스]
TS 실행 파일로 출력 ts-exec:실행파일경로
SRT 스트리밍 srt://[호스트]:포트
RIST 스트리밍 rist://[호스트]:포트
HLS 세그먼트 생성 /경로/$segmentCounter.ts?index=/경로/index.m3u8

 

◆ Push/Recording 스케줄링

특정 시간 또는 조건을 기반으로 푸시 및 녹화 작업을 예약할 수 있습니다.

스케줄링 옵셕  설명
스케줄 시간 (Schedule time) 푸시 또는 녹화가 시작될 날짜 및 시간
녹화 시작 시간 (Recording start time) recstartunix 옵션과 동일, 실제 데이터 저장 시작 시간
완료 시간 (Complete time) 푸시 또는 녹화가 종료될 날짜 및 시간
변수 기반 스케줄링 MistServer의 기본 변수 또는 사용자 지정 변수를 이용한 조건부 푸시

 

 

◆ Target URL 예제

다양한 Target URL 설정 예시를 통해 실제 활용 방법을 이해할 수 있습니다.

URL 예제  설명
/media/recording/$stream-$datetime.ts TS 포맷으로 녹화 (날짜 포함)
→ /media/recording/foo+bar-2018.02.01.12.34.56.ts
/media/recording/$basename/$wildcard.flv FLV 포맷으로 녹화 (스트림 이름 분리 저장)
→ /media/recording/foo/bar.flv
/media/recording/$year/$month/$day/$stream-$hour$minute$seconds.ts 연도/월/일별 폴더에 저장
→ /media/recording/2018/02/01/foo+bar-123456.ts
/media/recording/$stream.ts?recstartunix=1517490000 2018년 2월 1일 13:00:00부터 녹화
/media/recording/$stream.ts?recstopunix=1517490000 2018년 2월 1일 13:00:00에 녹화 중지
/media/recording/$stream.ts?recstartunix=1517490000&recstopunix=1517493600 2018년 2월 1일 13:00:00 ~ 14:00:00 사이 데이터 녹화
/media/recording/$stream.ts?recstart=5000&recstop=65000 5000ms(5초) ~ 65000ms (65초) 구간의 데이터 녹화
/media/recording/$stream.ts?video=h264&audio=aac&subtitle=eng H264 비디오, AAC 오디오, 영어 자막 포함 녹화
/media/recording/$stream.ts?video=all&audio=0&subtitle=0 비디오 트랙만 포함하고 오디오 및 자막 제거
/media/recording/$stream.ts?passthrough=1 모든 트랙(미지원 코덱 포함) 그대로 저장
/media/recording/$stream/$segmentCounter.ts?m3u8=../index.m3u8&split=6 6초 단위의 TS 세그먼트 저장 및 M3U8 플레이리스트 생성
→ /media/recording/foo+bar/1.ts, /media/recording/index.m3u8
rtmp://example.com/live/stream01 RTMP로 스트림 전송 (기본 포트 1935 사용)
rtmp://example.com:1950/live/$basestream 포트 1950으로 RTMP 스트림 전송
rtmp://example.com/live/streamtoken?withaquestionmark? ? 문자가 포함된 스트림 토큰 사용 (Facebook/YouTube 호환)
tsudp://example.com:8765 TS 형식으로 example.com:8765에 전송
srt://example.com:8877?streamid=$basename SRT 형식으로 example.com:8877에 전송 (streamid=foo)
rist://example.com:8888 RIST 형식으로 example.com:8888에 전송

 

5. 오디오/비디오 지원 목록

MistServer는 다양한 오디오 및 비디오 코덱과 컨테이너 형식을 지원하여 폭넓은 호환성을 제공합니다.

자세한 지원 목록은 https://www.mistserver.org/specifications 에서 확인할 수 있습니다.

출처: https://www.mistserver.org/specifications
출처: https://www.mistserver.org/specifications

 


 

관련 글 링크

https://docs.mistserver.org/mistserver/inputs/

 

Inputs | MistServer documentation

Streaming inputs and settings available within MistServer

docs.mistserver.org

https://docs.mistserver.org/mistserver/outputs/ 

 

Outputs | MistServer documentation

Streaming outputs and settings available within MistServer

docs.mistserver.org

https://www.mistserver.org/specifications

 

MistServer - Specifications

MistServer video support matrix   AVC/H264 HEVC/H265 AV1 VP8/VP9 MPEG2/H262 Flash** Theora DTSC ✓✓✓✓✓✓✓ HLS (TS) ✓✓--✓-- HLS (CMAF) ✓✓--✗-- DASH (CMAF) ✓✓----- MKV ✓✓✓✓✗✓✓ MP4 ✓✓-✗✗✗✗ WS/MP4 (MP4 ove

www.mistserver.org

 

 

728x90