hlsrc

/usr/local/m2/setting.json 다음 영역에 대해 기술한다.

{
  "functions": {
    "network": {
      "hlsrc": {
        ...
      }
    }
  }
}

How to use

명령어 리스트

https://foo.com/video.mp4/hlsrc/v1/master.m3u8
https://foo.com/video.mp4/hlsrc/v1/playlist.m3u8
https://foo.com/video.mp4/hlsrc/v1/init.mp4
https://foo.com/video.mp4/hlsrc/v1/{n}.m4s
https://foo.com/video.mp4/hlsrc/v1/meta.json

에러 메시지

응답코드

x-sc-chain-error 필드

설명

원본응답

not200

원본에서 200 OK 를 응답받지 못함

원본응답

ftpy

MP4헤더 값이 ftyp 가 아님

원본응답

invalidseq

잘못된 HLS 인덱스 번호

원본응답

toosmall

원본이 최소구성크기(8bytes) 미만

원본응답

failcache

원본콘텐츠 캐시로딩 실패

원본응답

failtrim

MP4 분할실패

415

noav

오디오/비디오 트랙 모두 없음

415

failparse

MP4 분석실패

415

failseek

MP4 탐색실패

415

failbuf

MP4 소스버퍼 할당실패

415

failiniseg

세그먼트 초기화 실패

415

failgenseg

세그먼트 생성 실패

meta

"meta" : {
  "enable" : false,
  "keyword": "hlsrc",
  "basepath": "/common/v1/",
  "tempdir": "/tmp/hlsrc"
}
enable (기본: false)

함수 활성화

keyword (기본: hlsrc)

함수 키워드

basepath

hlsrc 기반경로. 반드시 현재버전 v1 을 포함해야 한다.

  • 특정 그룹명으로 디렉토리 구조를 만들경우 그룹명 뒤에 버전을 명시한다.

    /mygroup/v1/
    
  • 그룹명이 없다면 S3 라이프사이클 정의규칙이 모호해진다.

    /v1/
    
tempdir (기본: /tmp/hlsrc)

임시파일 I/O 디렉토리 경로 (상대경로인 경우 설치경로 하위에 생성된다.)

Warning

/tmptmpfs 로 마운트하면 임시파일이 메모리를 사용한다. 메모리 사용 시 예기치 못한 결과가 발생할 수 있으므로 디스크 기반 경로(예: xcdrtmp) 로 권장한다.

확인 명령어와 결과 예시는 다음과 같다.

$ df -h /tmp
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           4.0G  1.2G  2.8G  30% /tmp

kvcache

"kvcache" : {
  "client_to_videobj": "5min",
  "origin_to_videobj": "1min"
}
client_to_videobj (기본: 5min)

클라이언트가 요청한 URL에 응답한 비디오 정보 캐싱시간

origin_to_videobj (기본: 1min)

원본으로부터 수신된 비디오 소스에 대한 분석정보 캐싱시간

Warning

캐싱은 성능향상을 위한 목적으로 trade-off를 고려해야 한다.

  • 너무 길면 변경이 늦게 반영된다.

  • 너무 짧으면 매번 비디오 소스를 읽어 성능이 저하될 수 있다.

storage

"storage" : {
  "list": [
    {
      "name": "backup",
      "enableRead": true,
      "enableWrite": true,
      "bucket": "mybucket",
      "touch": {
        "enable": true,
        "age": "300d"
      }
    }
  ]
}
list

스토리지 멀티 구성

Note

현재는 단일만 지원한다.

name

스토리지 이름

enableRead (기본: true)

스토리지 읽기허용

enableWrite (기본: true)

스토리지 쓰기허용. 다음 헤더가 같이 추가된다.

x-hlsrc-url: foo.com/video.mp4/hlsrc/v1/0.m4s
x-hlsrc-trace-id: 123129837921-1231298312-213210
x-hlsrc-ver: 1.6.19
bucket

S3 bucket

touch

현재는 기준으로 접근한 파일의 Last-Modified 시간이 age 를 초과화였다면 Last-Modified 를 현재 접근시간으로 갱신한다. 접근된 파일이 스토리지 라이프사이클에 의한 자동삭제 정책의 대상이 되는 것을 방지하려는 의도이다.