MistServer는 RTMP, SRT, HLS 등 다양한 입력과 출력 방식을 지원하는 고성능 스트리밍 서버입니다. MistServer는 다양한 설정을 통해 입력(Input), 스트림 관리, 출력(Output), 푸시(Push) 및 녹화 기능을 사용할 수 있습니다.
MistServer 스트리밍 이해하기: Inputs, Outputs, Push, Recording
목차
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 |
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://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
'1.시스템&인프라 > 스트리밍' 카테고리의 다른 글
[MistServer]5. MistServer Stream 녹화 설정 및 테스트: Push (0) | 2025.04.11 |
---|---|
[MistServer]4. MistServer Stream 설정 및 재생 테스트: Inputs,Outputs (0) | 2025.04.11 |
[MistServer]2.MistServer 기본 설정하기: 계정등록, 프로토콜 설정 (0) | 2025.04.10 |
[MistServer]1.MistServer 설치 및 서비스 등록: Ubuntu (0) | 2025.04.10 |
[FFmpeg]4.MinGW64로 FFmpeg 7.1 컴파일하기 : SHA-256 Digest 인증 지원, 정적 링크 (0) | 2025.03.30 |