1.시스템&인프라/MistServer

5. MistServer Stream 녹화 설정 및 테스트: Push

쿼드큐브 2025. 4. 11. 15:12
728x90
반응형

MistServer에서 스트림을 자동으로 녹화하거나 외부 서버로 전송(Push)하는 방법을 소개합니다.

 

MistServer 스트림 녹화 설정 및 테스트: Push

 

목차

1. 스트림 녹화 및 Push 개요

2. Push 방식 종류: Regular vs Automatic

3. 자동 녹화 파일명 설정과 변수 활용

4. 자동 녹화(Automatic Push) 설정 방법

5. 자동 녹화 상태 확인

6. 자동 녹화 종료

7. 수동 녹화(Regular Push) 설정 방법

관련 글 링크

 

 

1. 스트림 녹화 및 Push 개요

MistServer는 수신한 스트림을 외부로 전송하거나 디스크에 저장할 수 있는 Push 및 녹화(Recording) 기능을 제공합니다.
특히 자동화된 Automatic Push 기능을 사용하면, 스트림 활성화 시 자동으로 녹화 또는 외부 전송을 실행할 수 있어 편리합니다.

 

  • 라이브 방송 시 녹화를 자동으로 시작하여 VOD 파일 생성
  • 스트림 수신과 동시에 CDN이나 다른 서버로 자동 전달

 

자동 푸시 기능은 단순한 녹화 시작을 넘어, 다양한 변수 활용 및 스케줄링과 같은 세부 조건 설정을 통해 더욱 정밀한 제어가 가능합니다. MistServer는 다음과 같은 두 가지 푸시 방식을 제공합니다.

  • 일반 푸시 (Regular Push): 일회성으로 실행되는 푸시 방식으로, 스트림이 종료되거나 연결이 끊어지면 작업이 종료됩니다.
  • 자동 푸시 (Automatic Push): 스트림이 활성화될 때 자동으로 실행되며, 푸시 실패 시 설정된 조건에 따라 자동 재시도를 지원합니다.

푸시 설정은 MistServer 관리자 UI의 "Push" 메뉴 또는 각 스트림의 "Status" 메뉴에서 간편하게 설정할 수 있습니다.

 

2. Push 방식 종류: Regular vs Automatic

◆ Automatic Push:

  • 특정 설정 조건이 충족되면 MistServer가 자동으로 스트림을 외부 서버(예: 다른 미디어 서버, CDN, RTMP/SRT 대상)로 푸시 합니다.
  • 트리거(trigger) 방식으로 작동하며, 스트림이 시작(감지)될 때 자동으로 활성화 됩니다.
  • 보통 RTMP, RTSP, HLS, SRT, MPEG-TS, WebRTC 등의 프로토콜을 사용하여 전송이 가능합니다.
  • 예를 들어, rtmp://example.com/live/stream과 같은 대상이 설정되어 있다면, 스트림이 MistServer에서 시작될 때 자동으로 해당 주소로 푸시됩니다.
  • 라이브 스트림이 MistServer로 푸시될 때 또는 풀(Pull) 스트림이 1명 이상의 시청자를 가질 때 활성화 됩니다.

◆ Regular Push

  • 사용자가 API 또는 명령을 통해 수동으로 스트림을 외부 서버로 푸시할 수 있습니다.
  • 자동 푸시와 달리, 특정 스트림이 감지되지 않아도 사용자가 직접 제어하여 푸시를 시작/중지 가능합니다.
  • API 또는 CLI(Command Line Interface)에서 직접 실행하여 원하는 시점에 스트림을 특정 대상에게 전송합니다.
  • 예를 들어, MistServer의 API를 사용하여 ?push=rtmp://example.com/live/stream을 호출하면 해당 주소로 즉시 스트림이 전송됩니다.
구분 설명 사용방법
Regular Push 수동 실행 및 제어 API 또는 CLI로 직접 실행
Automatic Push 자동 조건 기반 실행 스트림 활성화 시 자동 실행, 재시도 가능

 

 

3. 자동 녹화 파일명 설정과 변수 활용

MistServer의 강력한 기능 중 하나는 녹화 시 변수를 활용하여 파일명을 자동으로 생성하는 기능입니다.

이를 통해 녹화되는 파일들이 자동으로 관리되어 기존 파일을 덮어쓰는 문제를 방지하고, 시간대별, 스트림별로 체계적인 파일 관리가 가능해집니다.

녹화 시작 시점에 설정된 변수가 적용되며, 필요에 따라 "사용자 정의 변수(Custom Variables)"를 추가하여 활용할 수도 있습니다.

  • MistServer 변수 치환(Variable Substitution)
변수명 설명 예시
$stream 전체 스트림 이름(와일드카드 포함) live/camera1_*
$basename 스트림 이름(와일드카드 제외) camera1
$wildcard 스트림 이름에서 와일드카드 부분만 *
$pluswildcard 와일드카드 포함(앞에 + 기호 포함) +*
$source 설정된 전체 소스 정보 rtmp://source_server/live/camera1
$day 현재 날짜 (01~31) 19
$month 현재 월 (01~12) 02
$year 현재 연도 (4자리) 2025
$hour 현재 시 (00~23) 15
$minute 현재 분 (00~59) 30
$second 현재 초 (00~60) 45
$wday 현재 요일 (월요일=1, 일요일=7) 2 (화요일)
$yday 현재 연도 기준 몇 번째 날인지 (001~366) 050
$week 현재 연도 기준 몇 번째 주인지 (01~53) 07
$datetime 날짜 및 시간 조합 ($year.$month.$day.$hour.$minute.$second) 2025.02.19.15.30.45
$epoch 현재 시간 (Unix Epoch 초 단위) 1745287845
$utc 현재 UTC 시간 2025-02-19T06:30:45Z
$rand8 8자리 랜덤 문자 A1B2C3D4
$rand16 16자리 랜덤 문자 E5F6G7H8I9J0K1L2

 

 

4. 자동 녹화(Automatic Push) 설정 방법

자동 녹화를 설정하기 위해서는 MistServer 관리자 UI의 "Push" 메뉴 또는 특정 스트림의 "Status" 메뉴에서 자동 푸시 설정을 추가해야 합니다.

 

1. 다음은 자동 녹화 설정 시 고려해야 할 주요 항목입니다.

 

  • Delay before retry: 자동 푸시 실패 시 재시도 간격을 설정합니다. 예를 들어, 10으로 설정하면 푸시 실패 후 10초 뒤에 재시도를 시도합니다.
  • Maximum retries: 자동 푸시 실패 시 최대 재시도 횟수를 설정합니다.
    • 3: 최대 3번까지 재시도 후 중단합니다.
    • 0: 재시도를 하지 않습니다.

 

2. 녹화하기 위한 Stream 명 및 파일저장 경로를 설정합니다.

 

 

  • Stream명: 녹화할 스트림의 이름을 지정합니다. 예를 들어, camera와 같이 특정 스트림을 지정하거나, 와일드카드(*)를 사용하여 여러 스트림에 동시에 적용할 수도 있습니다.
  • Target 명: 녹화된 파일이 저장될 경로와 파일명을 지정합니다. 이때 자동 파일명 생성을 위한 변수를 활용할 수 있습니다. 예를 들어, /mnt/d/nvtest/$year/$month/$day/$stream-$hour$minute$seconds.mp4와 같이 설정하면 연도, 월, 일, 스트림 이름, 시, 분, 초를 포함하는 파일명으로 저장됩니다.
  • 녹화 시작 시간 및 종료 시간 (선택 사항): 특정 시간대에만 녹화를 수행하도록 설정할 수 있습니다.

 

3. 설정을 완료한 후 "Save" 버튼을 클릭하면 자동으로 녹화가 시작됩니다.

 

5. 자동 녹화 상태 확인

자동 녹화 설정 후 "Save"를 선택하면 MistServer는 해당 스트림이 활성화되는 시점부터 자동으로 녹화를 시작합니다.

  • (1) Automatic push 작업 목록: 관리자 UI의 해당 섹션에서 현재 설정된 자동 푸시 작업 목록을 확인할 수 있습니다.
  • (2)전체 Push 작업 목록: Automatic Push 및 일반 Push 명령을 통해 현재 실행 중인 모든 푸시 작업 목록을 보여줍니다.

설정한 "Target 명" 형식에 따라 지정된 경로에 영상 파일이 정상적으로 녹화되는지 확인합니다.

예를 들어, /mnt/d/nvtest/2025/02/19/camera-190230.mp4와 같은 형식으로 파일이 생성되는 것을 확인할 수 있습니다.

"전체 Push" 목록에서 실행 중인 자동 녹화 작업을 "Stop" 버튼을 눌러 강제로 종료할 수 있습니다.

하지만 자동 푸시로 설정된 작업은 "Stop" 후에도 스트림이 활성화되어 있다면 자동으로 재시작되어 새로운 파일이 생성됩니다.

 

 

6. 자동 녹화 종료

자동 푸시로 설정된 녹화 작업은 "Stop" 버튼으로 종료하더라도 스트림이 활성화되어 있는 동안에는 자동으로 재시작됩니다. 따라서 자동 녹화를 완전히 종료하기 위해서는 다음과 같은 단계를 따라야 합니다.

  1. Automatic Push 목록에서 "Remove"를 선택하여 해당 자동 푸시 설정을 제거합니다. 단순히 제거만 할 경우, 이미 실행 중인 푸시 작업은 계속 진행될 수 있습니다.
  2. "전체 Push" 목록에서 해당 푸시 작업을 찾아 "Stop" 버튼을 클릭하여 현재 실행 중인 녹화 작업을 종료합니다.

또는, "Edit" 목록에서 해당 자동 푸시 설정을 찾아 비활성화하도록 설정한 후, "전체 Push" 목록에서 "Stop" 버튼을 눌러 작업을 종료할 수도 있습니다.

 

 

7. 수동 녹화(Regular Push) 설정 방법

특정 시점에 수동으로 녹화를 시작하고 싶을 경우에는 일반 푸시(Regular Push) 기능을 활용할 수 있습니다.

  1. MistServer 관리자 UI의 "Push" 메뉴 또는 특정 스트림의 "Status" 메뉴에서 일반 푸시 설정을 추가합니다.
  2. 필요한 푸시 정보를 입력합니다. 여기에는 대상 주소 (녹화 파일 저장 경로 포함) 및 스트림 이름 등이 포함됩니다. 자동 파일명 생성을 위해 변수를 사용할 수도 있습니다.
  3. "Save" 버튼을 클릭하면 수동 녹화가 즉시 시작됩니다.

수동으로 시작된 녹화 작업은 "Push 정보 목록"에서 해당 작업을 선택한 후 "Stop" 버튼을 클릭하여 종료할 수 있습니다.

수동 푸시는 자동 푸시와 달리 스트림 활성화 여부와 관계없이 사용자의 명시적인 제어에 따라 시작 및 종료됩니다.

 


 

관련 글 링크

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

https://docs.mistserver.org/howto/pushing/

 

Recording and pushing streams | MistServer documentation

How-to guides for pushing & recording with MistServer

docs.mistserver.org

 

728x90
반응형