ABR and Transcoding
Last updated
Last updated
OvenMediaEngine에 Live Transcoder가 내장되어 있어 Live Transcoder로 Ingest되는 Media Source를 Decoding하고, 설정된 코덱으로 다시 Encoding하거나 Transcoder 옵션 (Video Bitrate, Video Framerate, Audio Samplerate 등)을 활용하여 품질이 조정된 여러 개의 Live로 Encoding할 수 있습니다.
ABR and Transcoding Settings 페이지에서 OvenMediaEngine에 내장된 Live Transcoder의 설정 내용을 Application
별로 확인할 수 있습니다.
ABR and Transcoding Settings 페이지에서 Transcode Webhook의 활성화 여부 및 설정 내용을 확인할 수 있습니다.
Enabled
: 해당 옵션을 통해 TranscodeWebhook
기능을 활성화하거나 비활성화할 수 있습니다.
Control Server URL
: OvenMediaEngine으로 부터 OutputProfiles
관련 요청을 받고 응답을 해주는 Control Server의 URL을 기입하는 항목이며, HTTP와 HTTPS를 모두 지원합니다.
Secret Key
: Control Server 인증을 통과하는데 사용되는 Secret Key입니다. 보안 인증을 통과하기 위해 HTTP Payload의 HMAC-SHA1 암호화된 값이 HTTP Header의 X-OME-Signature
에 추가되는데 Secret Key는 이 값을 생성하는데 사용됩니다.
Timeout
: Control Server 연결 요청 후 응답을 기다리는 시간 (밀리 초)입니다.
Failure
: Contorl Server와의 통신 실패 시 Local 설정의 OutputProfiles
를 사용할지 여부를 결정하는 옵션입니다. 기본적으로 true
로 설정되어 있지만, 사용자가 해당 옵션을 false
로 설정한 경우 Control Server와의 통신 실패 시 Output Stream을 만들지 못합니다.
Server Disallow
: Control Server와의 연결 시 200 OK
로 응답했어도 allowed
가 false
로 설정된 경우 OvenMediaEngine은 UseLocalProfilesOnServerDisallow
정책을 따릅니다.
Error Response
: Control Server와의 연결 시 400 Bad Request
, 404 Not Found
, 500 Internal Error
와 같은 오류 상태 코드로 응답하는 경우, OvenMediaEngine은 UseLocalProfilesOnErrorResponse
정책을 따릅니다.
Server.xml
에서 HardwareAcceleration
옵션이 활성화되면, Stream을 생성할 때 Hardware Codec이 자동으로 사용되고, Hardware 리소스가 부족하여 Hardware Codec을 사용할 수 없는 경우 Software Codec으로 대체됩니다.
ABR and Transcoding Settings 페이지에서 OvenMediaEngine Enterprise가 Enterprise-grade로 지원하는 기능 중 하나인 GPU 기반 Hardware Decoding 및 Encoding (Hardware-Accelerated Video Encoding)의 활성화 여부 및 설정 내용을 확인할 수 있습니다.
Enabled
: 해당 옵션을 통해 HardwareAcceleration Encoder
를 활성화하거나 비활성화할 수 있습니다.
Module
: HardwareAcceleration Encoder
로 사용할 NVIDIA GPU, Xilinx Alveo U30MA, 또는 Intel QuickSync 등과 같은 Module을 지정합니다.
Enabled
: 해당 옵션을 통해 HardwareAcceleration Decoder
를 활성화하거나 비활성화할 수 있습니다.
Module
: HardwareAcceleration Decoder
로 사용할 NVIDIA GPU, Xilinx Alveo U30MA, 또는 Intel QuickSync 등과 같은 Module을 지정합니다.
ABR and Transcoding Settings 페이지에서 Application
에 설정된 Output Profile
목록을 확인할 수 있습니다.
Name
: 사용자는 Output Profile을 여러 개 생성할 수 있으므로, 각 Output Profile을 구분 짓기 위해 고유의 Pofile 명을 지정할 수 있습니다.
Output Stream Name
: Output Profile이 설정되었다면 해당 OutputProfile
내 Encodes
설정에 따라 Ingress Stream이 Encoding되는데, 이때 생성되는 Egress Stream 명은 Output Stream Name
규칙을 따르게 됩니다. 예를 들어, Ingress Stream 명이 sports
였다면 위 이미지에 명시된 규칙에 따라 sports_bypass
가 됩니다.
ABR and Transcoding Settings 페이지에서 Application
의 Output Profile 별 ABR 설정 내용을 확인할 수 있습니다.
OutputProfiles
에 Playlists
또는 여러 개의 Rendition
이 포함된 Playlist
를 추가하여 ABR을 설정할 수 있습니다. OutputProfile
은 여러 개의 Playlist
가 있을 수 있으며, 각 Playlist
는 FileName
으로 액세스할 수 있습니다.
Name
: 사용자는 여러 개의 Playlist를 구성할 수 있으므로, 각 Playlsit를 구분 짓기 위해 고유의 이름을 지정할 수 있습니다.
File Name
: 각 Playlist에 엑세스 할 수 있도록 File Name
을 지정할 수 있습니다. 단, File Name
에는 Playlist
및 Chunklist
가 포함되어서는 안 됩니다.
WebRTC Auto ABR
: WebRTC Stream에 ABR이 적용되어 있는 경우 해당 옵션을 통해 상황에 따라 시스템이 Rendition
을 자동으로 전환합니다.
HLS Chunklist Path Depth
: Chunklist
는 파일의 전체 경로를 포함하는 절대 URL을 사용하거나, Playlist 기반 상대 URL을 사용할 수 있습니다.
HLS Chunklist Path Depth
를 0으로 설정하면, 모든 Chunk 파일 (.ts
)이 Playlist와 같은 디렉토리 레벨에 위치하게 됩니다.
Enable TS Packaging
: Legacy HLS에서 사용되는 .ts
File은 사전에 A/V Mux 처리를 해야 하므로 EnableTsPackaging
옵션을 설정해야 합니다.
Name
: 사용자는 여러 개의 Rendition을 구성할 수 있으므로, 각 Rendition을 구분 짓기 위해 고유의 이름을 지정할 수 있습니다.
Video
: OutputProfile
내 Video Encode
를 설정했다면, Name
을 지정한 후 해당 Video Profile Name
세트를 Rendition Video
에 기입하면 자동으로 연결하 사용할 수 있습니다.
Audio
: OutputProfile
내 Audio Encode
를 설정했다면, Name
을 지정한 후 해당 Audio Profile Name
세트를 Rendition Audio
에 기입하면 자동으로 연결하여 사용할 수 있습니다.
각 Streaming Protocol이 지원하는 Codec이 있습니다. Playlist에 여러 개의 Codec을 설정했다면 OvenMediaEngine은 해당 Protocol에 맞는 Codec을 자동으로 선택하여 Stream을 전송합니다. 그러나 Streaming Protocol에 맞지 않는 Codec으로 설정되어 있다면 Stream을 전송할 수 없습니다.
List of supported codecs by streaming protocol: https://airensoft.gitbook.io/ovenmediaengine/transcoding#supported-codecs-by-streaming-protocol
Live Transcoder가 지원하는 Codec 목록: https://airensoft.gitbook.io/ovenmediaengine/transcoding#supported-video-audio-and-image-codecs
Audio Profile은 Ingress Audio를 Encoding 할 때 사용하며, Web Brower 정책이나 규격에 맞춰 Egress 하기 위해 필요합니다.
Name
: Rendition
에서 사용할 Audio Encode Name을 지정합니다.
Codec
: Audio Codec은 opus
또는 aac
로 설정할 수 있습니다.
Bitrate
: 1초당 전송할 Audio Bit
를 설정합니다.
Samplerate
: 1초당 전송할 Audio Sample
을 설정합니다.
Channel
: Audio를 재생할 Channel의 개수를 지정합니다. 예를 들어 Audio Channel
의 값이 2라면 Stereo로 동작하는 것을 의미합니다.
Audio Encoding Profile만 설정하는 경우 Audio-only로 전송할 수 있습니다.
Video Profile은 Ingress Video를 Encoding 할 때 사용합니다. Web Brower 정책이나 규격에 맞춰 Egress 하기 위해 필요합니다.
Name
: Rendition
에서 사용할 Video Encode Name을 지정합니다.
Codec
: Video Codec은 vp8
, h264
, 또는 h265
로 설정할 수 있습니다.
Bitrate
: 1초당 전송할 Video Bit
를 설정합니다.
Width
: Encoding할 Video의 가로 사이즈를 지정할 수 있습니다.
Height
: Encoding할 Video의 세로 사이즈를 지정할 수 있습니다.
원본 Video의 종횡비를 유지한 채 전체적으로 해상도를 줄이거나 키우고 싶다면 Width
값만 입력하는 것도 좋은 방법입니다. OvenMediaEngine이 원본 Video 비율에 따라 자동으로 Height
를 계산하여 해상도를 조정할 것입니다.
Framerate
: 1초당 몇 개의 Image로 구성된 Video로 Encdoing 할 것인지 설정합니다.
Key Frame Interval
: 두 개의 Key Frame 사이에 몇 개의 Frame이 포함될지 설정합니다 (0~600). 기본값은 Framerate를 따릅니다 (1초).
B-Frames
: B-Frame의 개수를 설정합니다 (0~16). 기본값은 0입니다.
Profile
: Video Codec
이 h264
로 설정되어 있을 때 사용할 수 있는 옵션입니다. baseline
, main
, high
중에 하나를 지정할 수 있습니다.
Preset
: 각 Video Codec이 지원하는 Preset
를 지정할 수 있습니다.
h264
를 사용하는 경우 ultrafast
, superfast
, veryfast
, faster
, fast
, medium
, slow
, slower
, veryslow
, placebo
등의 Preset
을 사용할 수 있습니다.
Thread Count
: Video Encoding 시, 사용할 Thread 수를 지정할 수 있습니다.
Image Profile은 Stream의 Thumbnail을 추출하는 옵션이며, 원본 그대로 추출하는 Bypass
옵션을 사용할 수 없습니다.
Codec
: Image Codec은 jpeg
또는 png
로 설정할 수 있습니다.
Framerate
: Thumbnail Image를 1초 당 몇 장 추출 할 것인지 설정하는 옵션이며, Image Framerate
가 Video Framerate
에 가까울 수록 움직임이 자연스러운 Thumbnail을 추출할 수 있지만 Server 과부하를 불러 일으킬 수 있습니다.
Width
: 추출할 Thumbnail Image의 가로 사이즈를 지정할 수 있습니다.
Height
: 추출할 Thumbnail Image의 세로 사이즈를 지정할 수 있습니다.
원본 Video의 종횡비를 유지하고 싶다면 Width
값만 입력하는 것도 좋은 방법입니다. OvenMediaEngine이 원본 Video 비율에 따라 자동으로 Height
를 계산하여 Thumbnail Image를 추출할 것입니다.
Ingress Stream의 Codec 또는 Track 품질이 BypassIfMatch
의 모든 조건과 일치하면 Encoding 없이 Pass-through로 Egress Stream을 전송할 수 있습니다.
Codec
: Audio Codec이 같을 때 Pass-through 됩니다.
Samplerate
: 설정에 따라 Audio Samplerate 값이 같거나, 작거나 같거나, 크거나 같을 때 Pass-through 됩니다.
Channel
: 설정에 따라 Audio Channel 수가 같거나, 작거나 같거나, 크거나 같을 때 Pass-through 됩니다.
Codec
: Video Codec이 같을 때 Pass-through 됩니다.
Width
: 설정에 따라 Video의 Width 크기가 같거나, 작거나 같거나, 크거나 같을 때 Pass-through 됩니다.
Height
: 설정에 따라 Video의 Height 크기가 같거나, 작거나 같거나, 크거나 같을 때 Pass-through 됩니다.
SAR
: BypassIfMatch
에 지정된 조건과 해상도 및 비율이 일치하면 Pass-through 됩니다.