• 재생을 할 때 하나의 URL로 접근 할 경우 Connection URL과 StreamName, 두개의 부분으로 나뉘어 지는데 보통은 아래와 같이 나눠짐

  • 요청 URL : rtmp://[server]:[port]/[application]/[appInstance]/[streamName]
    1. Connection URL : rtmp://[server]:[port]/[application]/[appInstance]
    2. Stream name : [streamName]

  • server에서 요청 URL(rtmp://[server]:[port]/[application]/[appInstance]/[streamName])은 아래와 같이 해석됨
    1. Connection URL : rtmp://[server]:[port]/[application]/definst
    2. Stream name : [streamName]

 

※ 만약에 Stream name 부분에 경로가 들어가게 되고 appInstance로 구분지어주지 않는다면 아래와 같이 경로가 잘못되게 나눠짐

  • 요청 URL : rtmp://[server]:[port]/[application]/[path1]/[path2]/[streamName]
    1. Connection URL : rtmp://[server]:[port]/[application]/[path1]
    2. Stream name : [path2]/[streamName]

  • Stream name 부분에 경로를 포함하고 있다면 appInstance 부분을 명시해줘야 함
  • 모든 프로토콜에 적용되며 StreamName 부분에 경로가 없다면 _definst_를 제거해도 됨

 

 

※ appInstance == _definst_인 이유

  • appInstance는 응용 프로그램을 인스턴스화한 것으로, 스트리밍을 위한 네임스페이스(namespace)와 컨텍스트(context)를 제공
  • appInstance는 동적으로 시작되며 단일 애플리케이션에 여러 개의 명명된 appInstance가 동시에 실행될 수 있음
  • appInstance에 대해 이름이 지정되지 않은 경우 기본 이름(definst)이 사용됨
  • 많은 스트리밍 시나리오에서는 애플리케이션별로 단일 appInstance가 사용되며 이름은 참조되지 않고 기본값이 definst됨
  • 스트리밍을 위해 여러 회의실을 만들어야 하는 비디오 채팅 및 비디오 회의 시나리오에서는 여러 애플리케이션 인스턴스를 사용하는 것이 더 일반적임
  • appInstance는 스트리밍을 방으로 분리하는 데 사용됨 → 각 룸은 별도의 appInstance로, 각 룸에 대한 분리(separation) 및 네임스페이스(namespace)를 제공

 

참고 자료

'Media(미디어) > Wowza Streaming' 카테고리의 다른 글

Wowza 포트(ports)  (0) 2023.09.24
Wowza key features(Wowza 핵심 기능)  (0) 2023.09.24

Wowza 포트

Port Type Use
1935 TCP RTMP (all variants), RTSP, Microsoft Smooth Streaming, Apple HLS, MPEG-DASH, HDS, WOWZA™
6970-9999 UDP Incoming RTP UDP streaming
8084-8085 TCP JMX/JConsole monitoring and administration
8086-8087 TCP HTTP administration
8088 TCP Wowza Streaming Engine Manager
554 (optional) TCP RTSP
443 (optional) TCP SSL connections
80 TCP Microsoft Smooth Streaming, Apple HLS, MPEG-DASH, HDS
Licensing server connections

 

참고 자료

- [펌][Wowza] WOWZA 설정하기 : 네이버 블로그 (naver.com)

 

 

1. Live Latency control

  • 고객의 Keyframe interval 조정과 Wowza origin에서 media chunk(segment) duration을 조정하여 live latency를 짧게 함
  • Client - CDN(Relay) - Origin 구간 network 영향을 받으므로 일반적으로 권장하는 최소 live latency는 2초 chunk * 3 playlist를 권장
  • 권장하는 최소 live latency는 2초 chunk * 3 playlist → 실제 player는 약 6~8초 정도의 delay 발생
  • Wowza 기본값은 10초 chunk * 3 playlist → 10초 * 3 개 = 30초 delay 발생

 

1.1. Customer role

  • Key frame interval 조정 : 1~2초 (알맞은 설정)

 

1.2. Nimbus role.

  • Wowza media segment duration 조정

 

1.3. Cupertino Streaming Packetizer (2 sec chunk * 3 playlist 설정으로 예시)

TypeContents Contents Contents
cupertinoChunkDurationTarget - 각 청크(chunk) 의 지속 기간을 밀리 초 단위로 설정
- 기본 값은 10000 (10초)
- HLS stream의 대기 시간을 줄이려면 chunkDurationTarget이 더 작아야 함.
- 1 초의 chunk 크기의 경우 값을 1000으로 설정
2000
cupertinoMaxChunkCount - 사용 가능한 청크(chunk) 목록을 Wowza에 저장할 최대 개수를 설정
- 기본 값은 10
- 대기 시간을 줄이려면 50초 분량의 청크(chunk)를 저장
- 1 초 청크의 경우, cupertinoMaxChunkCount를 50으로 설정
- Half second chunk를 사용하는 경우 이 값을 두 배로 늘려야 함 (100).
6
cupertinoPlaylistChunkCount - Client Playback으로 Playlist에 반환 되는 청크(chunk) 항목 수를 설정
- 기본 값은 3
- 지연 시간을 줄이려면 player에 12 초의 데이터를 반환
- chunk(청크) 목록 요청 간 청크가 손실되지 않음

- 1 초 청크의 경우, cupertinoPlaylistChunkCount를 12로 설정
- Half second 청크를 사용하는 경우 값을 두 배로 늘려야함 (24).
3

 

1.4. Chunk Response body in Media playlist(미디어 재생목록의 청크 응답 본문)

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:13
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:2.0,
media-ug00et4ec_13.ts
#EXTINF:2.0,
media-ug00et4ec_14.ts
#EXTINF:2.0,
media-ug00et4ec_15.ts

 

 

2. VoD source 생성 및 Live 송출 시 주의사항

  • 규격에 맞는 Protocol 별 Codec, Profile, Level 이용을 이용을 준수 → Vendor guide가 있으므로 찾아서 참조할 것.
  • Live의 경우 chunk duration에 따라 1 or 2초의 key frame interval을 사용 → Key frame interval 일반적으로 2초를 권장(Key Frame interval 1초인 경우 너무 짧아, 선명도가 상대적으로 떨어짐. Frame 간의 압축에서 효율이 떨어짐.)
  • UDP 송출의 경우 network 상태에 따라 품질 불균형을 야기할 수 있음(mpeg-ts UDP)

 

 

3. Key Frame Interval

  • Key frame interval 설정 시 chunk duration 이하로 생성 필요
  • Key frame interval <= Chunk duration
  • Unit : sec
Key frame interval Target Chunk duration Real chunk duration
1 2 2
2 2 2
3 2 3
4 2 4

 

 

4. Application, Stream Key (Where is Host?)

4.1. Application (App Name)

  • Wowza는 기본적으로 hostname을 지원하지 않음(Virtual host 개념 미사용, Wowza IP에 Hostname을 아무거나 요청해도 됨)
  • Wowza SSL 적용은 가능하나, Wowza를 edge로 사용하는 경우는 거의 없음
    Type Name Role Common
    Wowza Application - Application(AppName)은 스트리밍 콘텐츠의 논리적 container
    - 요청을 처리하고 콘텐츠를 전달하기 위한 규칙을 정의
    - 각 Application에는 unique한 이름이 있으며 구성, 보안 설정 및 전달 방법을 가질 수 있음
    - 하나의 Wowza server에 여러 App을 설정하여 고유한 설정으로 Stream 서비스 가능
    두 개념 사이에는 몇 가지 유사점이 있지만 주요 차이
    1. Wowza의 Application은 스트리밍 콘텐츠만 해당
    2. Web server의 Hostname은 모든 유형의 웹 콘텐츠에 사용


    Wowza의 Application은 WebServer의 Hostname과 연결되지 않는 caching 및 chunking 같은 contents를 전달하기 위한 특정 설정으로 구성 가능
    WebServer Host - Hostname은 website 또는 Web Application의 고유 식별자
    - 요청을 올바른 웹 서버로 라우팅하고 적절한 콘텐츠를 검색하는 데 사용
    - Hostname은 여러 하위 도메인을 가질 수 있으며 여러 IP 주소와 연결될 수 있음
    - 하나의 Web server에 Virtual host를 사용하여 여러 개의 Web server Host(Domain)를 운영 가능

 

4.2. Stream Key

  • Live 서비스에서 고객이 송출을 시작하면, 송출 시 Encoder에 설정한 Stream (Key)를 확인 가능
  • Application 내에서 여러 Stream이 존재할 수 있으며, 이것은 각 독립적인 Live channel이라고 보면 됨
  • ABR을 구성할 경우 동일 App에 송출되는 High, Mid, Low spec의 Stream (Key)를 묶어서 사용

  • OBS Encoder에서 Stream Key 설정
  • [AppName] > Incoming Streams 항목

 

 

5. nDVR(nDVR = Timeshift = SlidingWindow)

  • Wowza Streaming Engine™ nDVR 기술은 라이브 스트림을 녹화하는 동시에 사용자가 녹화된 스트림을 Play, pause, resume 및 rewind 할 수 있는 기능을 제공

 

5.1. Play URL

 

5.2. DVR Store Directory

  • DVR 재생을 위해 라이브 스트림에 대한 녹화가 서버에 저장되는 위치를 정의
  • 디렉터리 경로 값은 (<)보다 작음, (>)보다 큼, 따옴표(' 및 "), 백슬래시(), 파이프(|), 물음표(?) 및 별표(*) 문자를 포함할 수 없음

 

5.3. Streaming Options

  • "Live and DVR streaming" or "DVR streaming only" 선택가능

 

5.4. Recording Options

  1. Append (기본)
    • 이어 쓰기
    • 새 스트림을 기존 레코딩에 추가하며, 현재 라이브 스트림(인코더 재시작 등)의 중단을 설명하는 fail safe mechanism으로 사용하는 것이 가장 좋음

  2. Delete
    • 이전 기록을 삭제하고 새 기록을 시작
      • 재생이 끝나야 실제 삭제 되는 것으로 보임

  3. Version
    • DVR 저장소의 새 폴더에 새 스트림을 기록하기 시작함

 

5.5. DVR Window Duration

  • 3시간 내 설정하여 사용을 권장
  • 길게 설정할수록 chunk playlist가 길어져 문제가 생김
  • 최대 48시간까지 지원
  • 추가로 사용하는 요금제에 따라 별도 청구가 될 수 있음
  • If you purchased a license for Wowza Streaming Engine before January 1, 2015, contact sales@wowza.com to learn more about how to license Wowza nDVR.

 

 

6. Caption

  • Application 생성 시 설정한 내역을 토대로 동일 경로에 있으면 caption이 자동으로 입혀짐
  • 설정화면
  • HLS native play 실행 시 자막 화면(srt 사용)
    • srt file을 별도로 가져와서 처리하는 것이 아닌 Wowza에서 영상에 입혀 줌
    • PotPlayer의 경우 Closed Caption : On 설정 시 나옴

 

 

7. H.265 HLS live

  • Wowza에서는 H.265 HLS live stream을 지원
  • RTMP protocol은 H.265 spec을 지원하지 않음 → mpeg-ts UDP 방식으로 source를 ingest함
  • 향후 Wowza에서도 Enhanced RTMP ingest가 지원되기를 희망합니다.(by 문호차장님)

 

7.1. Enter a name for the new Stream File: *

  • h265test * Stream (Key)로 사용할 name 설정

 

7.2. Stream URI *

  • udp://devwowza.cdn.co.kr:20001 * Source로 사용할 URI를 지정
  • H.265의 경우 UDP://IP:Port 구성

 

7.3. 송출 후 ingest 및 재생확인

 

7.4. h.265 재생확인

 

 

8. Live record

  • Live stream을 record, VOD source로 사용할 수 있도록 저장
  • API도 제공

 

 

9. Transcoder

  • Wowza에 내장된 Transcoder를 이용
  • 사전 구성된 preset을 이용하여 Transcoding 처리.
  • 보통 ABR(Adaptive BitRate) 구성에 이용
  • Live만 지원함

  • Wowza 지원 범위
    1. Codec, Bitrate, Resolution, Profile, Key frame interval 변경
    2. Frame rate 변경은 지원 X

  • 요금에 따라 별도 비용 청구 됨

 

 

10. CMAF (Common Media Application Format)

  • Apple, Microsoft 및 MPEG와 공동으로 개발된 CMAF는 아키텍처가 두 가지 주요 측면을 포함하는 ISO 표준
  • CMAF 기능은 HLS 및 MPEG-DASH라는 가장 널리 사용되는 두 HTTP 프로토콜을 통한 스트리밍을 단순화함
  • CMAF의 공유 리소스 사용은 인코딩을 간소화하고, 컴퓨팅 리소스를 효율적으로 사용하며, CDN 대역폭을 최적화하고, 캐싱을 덜 요구하며, 규모에 맞게 스트리밍할 때 비용 효율적
  • Wowza Streaming Engine은 CMAF packetizer를 사용하여 Low-Latency HLS(LL-HLS) 스트림에 필요한 부분 세그먼트를 생성

 

 

'Media(미디어) > Wowza Streaming' 카테고리의 다른 글

Wowza에서 URL에 _definst_가 들어가야 하는 이유  (0) 2023.09.24
Wowza 포트(ports)  (0) 2023.09.24

+ Recent posts