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 서비스 가능두 개념 사이에는 몇 가지 유사점이 있지만 주요 차이
- Wowza의 Application은 스트리밍 콘텐츠만 해당
- 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
- 끝에 Query String ?DVR 을 붙이면 DVR 동작
- http://devwowza.cdn.cloudn.co.kr/httplive/_definst_/test/playlist.m3u8?DVR
5.2. DVR Store Directory
- DVR 재생을 위해 라이브 스트림에 대한 녹화가 서버에 저장되는 위치를 정의
- 디렉터리 경로 값은 (<)보다 작음, (>)보다 큼, 따옴표(' 및 "), 백슬래시(), 파이프(|), 물음표(?) 및 별표(*) 문자를 포함할 수 없음
5.3. Streaming Options
- "Live and DVR streaming" or "DVR streaming only" 선택가능
5.4. Recording Options
- Append (기본)
- 이어 쓰기
- 새 스트림을 기존 레코딩에 추가하며, 현재 라이브 스트림(인코더 재시작 등)의 중단을 설명하는 fail safe mechanism으로 사용하는 것이 가장 좋음
- Delete
- 이전 기록을 삭제하고 새 기록을 시작
- 재생이 끝나야 실제 삭제 되는 것으로 보임
- 재생이 끝나야 실제 삭제 되는 것으로 보임
- 이전 기록을 삭제하고 새 기록을 시작
- 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 재생확인
- StreamKey 부분에 그대로 이용.
- http://devwowza.cdn.co.kr/singlelive/_definst_/h265test.stream/playlist.m3u8
8. Live record
- Live stream을 record, VOD source로 사용할 수 있도록 저장
- API도 제공
9. Transcoder
- Wowza에 내장된 Transcoder를 이용
- 사전 구성된 preset을 이용하여 Transcoding 처리.
- 보통 ABR(Adaptive BitRate) 구성에 이용
- Live만 지원함
- 버전에 따라 기본 내장 Transocder가 다름, Version upgrade 시 주의
- 구 버전 : MainConcept (https://www.mainconcept.com/)
- 신 버전: Beamr (https://beamr.com/)
- Wowza 지원 범위
- Codec, Bitrate, Resolution, Profile, Key frame interval 변경
- 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 |