Wowza Streaming Engine


ref: https://www.wowza.com


Intoduce

Wowza media systems의 유료 CDN 플랫폼이다. (구)Wowza Media Server는 미디어 플레이어에 실시간 스트리밍, VOD, 채팅, 원격 녹음 등의 기능을 제공하는 고성능의 확장가능한 대화식 미디어 스트리밍 소프트웨어이다.

Java를 기반 서버로, Java 8이 권장되며, JRE 서버 버전이 같이 설치된다.


Installation

Windows, OS X, Linux 지원

라이센스를 발급받고, Wowza-installer.run 파일을 다운 받아 실행한다.

[install-dir]/conf/Server.license 파일에 라이센스 키가 있다.

기본 설치 위치(Linux): /usr/local/WowzaStreamingEngine-[VERSION]/ (as a root)


Start

1
# /etc/init.d/WowzaStreamingEngine start
cs


http: 1935 포트 접속으로 엔진 동작 확인


성공 확인 후 관리자 시작

1
# /etc/init.d/WowzaStreamingEngineManager start
cs


http:// 8088/enginemanager 실행



관리자 계정으로 로그인하여 플레이어 테스트



[install-dir]/content/sample.mp4 비디오 파일 재생 테스트


Streaming Port

기본 포트

TCP 1935 

RTMP / RTMPE / RTMPT /RTSP 인터리빙 스트리밍 / WOWZ 

TCP 8086-8088 

관리 

UDP 6970-9999 

RTP UDP 스트리밍 


스트리밍 포트 추가 구성도 가능하지만, 다른 프로그램 / 서비스와 포트를 공유할 수 없기 때문에 사전 확인이 필요하다.

TCP 80 

Adobe HDS, Apple HLS, Microsoft Smooth Streaming, MPEG-DASH 스트리밍, RTMPT 

TCP 443 

RTMPS, HTTPS

TCP554 

RTSP 


Log

로그 파일이 기록되는 기본 경로: [install-dir] / logs

기본 로깅수준 INFO는 모니터링 활성화, 정보 수집 가능


Server Configuration

서버 설정

인스턴스 이름, 라이센스, 응용 프로그램 모니터링 기능 등 구성

서버모니터링: 총 리소스 소비(CPU, HEAP, 메모리, 디스크 등), 송수신 커넥션, 네트워크 처리량, 가동시간 모니터링

가상호스트 설정: vhost 환경 관리

가상호스트 모니터링

트랜스코더: 인바운드 소스 스트림 수 모니터링, 트랜스코더 템플릿 관리

미디어 캐시: HTTP 기반 서버 및 네트워크 연결 파일 시스템에서 VOD 파일 원본을 스트리밍하여 VOD 스트림의 확장형으로 사용하는 캐싱 구성

사용자 관리

원본 인증: RTMP / RTSP 기반 인코더 등에 필요한 사용자, 암호관리

성능 조정

로그 관리

SMIL 파일: Synchronized Multimedia integration language. 다양한 비트 전송률 스트림을 HTTP Adaptive bitrate streaming 하는 그룹 구성 관리


Application

스트리밍 컨텐츠 전달을 위한 특정 엔진 구성 옵션



Live

플레이어(단일 서버) 또는 원본 서버로 라이브 스트림 전달

Live Edge

Wowza Media Server 소프트웨어가 실행되는 원본 서버의 라이브 스트림 처리. 라이브 스트림 플레이어에 전달하는데 사용

Live HTTP Origin

HTTP 스트리밍 프로토콜 (Adobe HDS, Apple HLS, MSS, MPEG-DASH)을 사용하여 HTTP 캐싱 인프라에 라이브 스트림 전달

VOD

VOD 파일 플레이어로 스트리밍

VOD Engine

미디어 캐시 소스의 VOD 수집하여 VOD 플레이어로 스트리밍

VOD HTTP Origin

LIVE HTTP Origin과 동일

'CDN - Platform' 카테고리의 다른 글

Streaming Protocol: HLS  (0) 2018.08.21
Streaming Protocols  (0) 2018.08.10

HLS (HTTP Live Streaming)

Apple사에서 사용하는 표준 HTTP 기반 스트리밍 프로토콜. 스트리밍 데이터를 m3u8 확장자의 재생목록 파일과 잘게 쪼개진 다수의 ts(동영상)파일을 HTTP를 통해 전송하는 방식
- m3u8: m3u 파일이 UTF-8로 인코딩 되어있음
- m3u: 멀티미디어 파일의 재생목록 관리하는 파일
- ts: MPEG-2 Transport Stream 포맷

IETF를 통한 표준화 작업을 통해 다른 업체에서도 HLS 지원이 가능해졌다. 

HLS 전송방식

서버는 HTTP를 통해 클라이언트로부터 요청을 받고, 응답하는 역할만 수행한다. Stream Segmenter는 일정한 시간 간격마다 입력받은 미디어 데이터를 분할해 파일로 만들고, 그 파일에 접근할 메타데이터(m3u8)을 생성하는 역할을 한다.




HLS에서 ABS (Adaptive Bitrate Streaming)을 위해 동시에 여러 비트율의 ts 파일에 대한 정보를 제공한다. 확장성이 높고, 안정적이지만 구조상 파일을 먼저 만들고 스트리밍하는 방식이므로 RTMP/RTSP 방식에 비해 딜레이 문제가 발생할 수 있다.


- 사용자의 네트워크 속도에 따라 적합한 컨텐츠를 선택하여 재생

- 대역폭 변동에 대한 품질 개선 및 안정성

- Apple HLS / Adobe HDS / Microsoft HSS

'CDN - Platform' 카테고리의 다른 글

Platform: Wowza  (0) 2018.08.28
Streaming Protocols  (0) 2018.08.10

Streaming Protocols

ref: https://blog.kollus.com/


Progressive Download

youtube, ESPN, CNN 등이 사용한 동영상 전송 방법. 점진적으로 다운로드하여 플레이 되는 방식. 미디어 서버가 아닌, 웹 서버의 비디오를 플레이어에게 URL을 알려주어 HTTP로 동작하며, 가장 구현이 쉽고 비용이 적다. (단순하게 웹에서 파일을 다운받아 진행하는 방식)

클라이언트에서 비디오를 재생하면 웹 서버에서 즉시 다운로드 시작, 즉시 플레이 가능할 수도 있고, 시간이 지난 후 플레이 될 수도 있으나 전체 파일이 다운로드 될 필요는 없다. 클라이언트의 인터넷 환경에 따라 다르며, 중간 부분이 다운되지 않았으면 재생되지 않는다.

이 방식으로 동영상이 꾸준히 재생되기 위해서는 서버에서 클라이언트로 전달되는 네트워크 속도가 동영상의 데이터 레이트보다 높아야한다. 512Kbps 동영상이라면 적어도 그에 맞는 네트워크 속도가 있어야 끊김 없이 제공된다.




단점은 파일을 다운로드하여 가져오는 방식으로 보안에 문제가 있고, 유료 서비스를 위한 사이트에서는 이용할 수 없고, 라이브 스트리밍을 지원하지 않는다.

또한, bandwidth traffic 소모가 다운로드 한 만큼 소모된다. 1GB 사이즈 영상을 300MB만 시청했더라도, 나머지 부분도 다운로드가 완료된 상태이기 때문에 비용이 청구된다. 한 번 다운로드가 시작되면 비디오의 품질은 고정되며, 중간에 변경할 수 없다. Fullscreen 모드에서도 화면 사이즈만 커질 뿐 화질이 변경되지 않는다.

Live가 아닌 VOD에서 유용하며, 점진적으로 사용자 PC에 다운로드하며 재생


Pseudo Streaming

Progressive 방식(사용자 단말에 다운로드하는 방식)bandwidth 비효율적인 것을 보완하고 Live 서비스와 고화질을 제공하기 위해 나온 기술이다. 아직 다운받지 않은 부분을 요청해도, 메타 프레임 정보를 통해 다시 다운로드를 시작하여 플레이하여, 중간부터 시청이 가능하다. 웹 서버에 모듈을 설치해야 작동하며, Flash Player, HTML5 Player에서 지원된다. 화질을 클라이언트가 선택하게 해준다.

Progressive 다운로드의 단점 보완, 라이브 지원, bandwidth 조절, Seeking 기능, 보안 강화

RTSP / RTMP

프로그레시브 다운로드 방식의 단점을 보완하기 위해 Hulu 등의 미디어 조직에서 이 프로토콜을 주로 사용한다. 사용자가 현재 시청하고 있는 비디오 프레임만을 전송해 주는 웹 서버를 사용하며, 데이터를 미리 다운로드하지 않고, 이미 시청한 데이터는 버리는 방식을 사용한다. (pseudo-streaming 방식에서는 지난 데이터를 삭제하지 않고 저장한다.)
플래시를 위한 RTMP, FMS, Wowza 등 대부분의 CDN 서버들이 지원하는 프로토콜이다.
안드로이드에서 지원하는 RTSP는 스트리밍 서버나 CDN에서 많이 사용되지는 않는다.
또한, 방화벽에서 막히는 경우가 있다. 이는 전용 서버를 필요로 하므로, 프로그레시브 방식에 비해 접속이 용이하지 않고 복잡성이 증가하며 비용이 증가한다.
기본적으로 서로 다른 bitrate로 인코딩된 파일을 따로 업로드하여 사용한다.
VOD, e-learning, Live 중계 등의 분야에서 많이 사용된다.

RTMP (Real-Time Messaging Protocol)

Adobe 사의 독점 TCP 기반 프로토콜. 오디오, 비디오 등의 데이터를 인터넷을 통해 스트리밍 할 때 사용. adobe flash player와 서버 사이 통신에 이용.

-       기본 1935번 포트. 실패 시 443 포트(RTMPS), 80 포트(RTMPT)로 재시도

-       RTMPT (RTMP Tunneled): RTMP 데이터를 HTTP로 감싼 것. HTTP 헤더로 RTMP보다 크기가 큼

-       RTMPS: RTMP + HTTPS. Flash player에서 SSL 입출력 지원

-       RTMPE: 128비트로 암호화된 RTMP. SSL보다 가볍지만 인증이 없음. 암호화 채널 사용으로 성능에 영향 있음

-       RTMPTE: RTMPT + RTMPE. 서버 성능에 영향

-       RTMFP: Real Time Media Flow Protocol. UDP에서 동작하며 항상 암호화된 상태로 데이터 전송



RTSP (Real-Time Streaming Protocol)

- IETF가 개발한 프로토콜
- 스트리밍 데이터 제어
- 오디오, 비디오 등 멀티미디어 데이터를 포함하는 미디어 서버 원격 컨트롤
- PLAY, PAUSE 등 VCR 동작과 비슷하며 시간 정보를 바탕으로 서버에 접근
- 실제 미디어 스트리밍 데이터를 저장하지 않고, RTP 규약을 사용하여 전송 계층에 실제 오디오/비디오 데이터를 전송
- RTSP는 HTTP와 비교하여 동작이나 문법이 비슷하지만 HTTP가 stateless인 반면 RTSP는 statful 프로토콜이다.



Adaptive Streaming

Adaptive HTTP Streaming은 전통적인 기술을 개선한 스트리밍 방식이다. RTMP/RTSP와 Progressive 방식의 장점을 결합했다. 서버에 작은 Chunk의 몇 초 단위 동영상을 가지고 스트리밍하며, 플레이어에서 이 조각들을 연속 스트림으로 연결한다.
Move Network 사의 Adaptive bitrate 기술이 기반이다.
사용자 bandwidth 환경을 인지하여 그에 맞는 스트리밍을 제공하며, Apple에서 HLS(HTTP Live Streaming)란 이름으로 iOS 기반으로 출시되었다.
Adobe에서는 Adobe HTTP Dynamic Streaming 기술을 발표하기도 했다.

미디어 서버와 같이 비싼 장비와 RTMP 같이 복잡한 프로토콜 기술을  사용하지 않고, Bandwidth 효율이 좋아 화질 변경이 용이하다.




'CDN - Platform' 카테고리의 다른 글

Platform: Wowza  (0) 2018.08.28
Streaming Protocol: HLS  (0) 2018.08.21

+ Recent posts