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
고유한
{video-path}는ETag헤더로 추가된다.meta.json은 비디오 분석정보 이다.
에러 메시지¶
응답코드 |
|
설명 |
|---|---|---|
원본응답 |
|
원본에서 |
원본응답 |
|
MP4헤더 값이 |
원본응답 |
|
잘못된 HLS 인덱스 번호 |
원본응답 |
|
원본이 최소구성크기(8bytes) 미만 |
원본응답 |
|
원본콘텐츠 캐시로딩 실패 |
원본응답 |
|
MP4 분할실패 |
|
|
오디오/비디오 트랙 모두 없음 |
|
|
MP4 분석실패 |
|
|
MP4 탐색실패 |
|
|
MP4 소스버퍼 할당실패 |
|
|
세그먼트 초기화 실패 |
|
|
세그먼트 생성 실패 |
meta¶
"meta" : {
"enable" : false,
"keyword": "hlsrc",
"basepath": "/common/v1/",
"tempdir": "/tmp/hlsrc"
}
enable (기본: false)함수 활성화
keyword (기본: hlsrc)함수 키워드
basepathhlsrc 기반경로. 반드시 현재버전
v1을 포함해야 한다.특정 그룹명으로 디렉토리 구조를 만들경우 그룹명 뒤에 버전을 명시한다.
/mygroup/v1/
그룹명이 없다면 S3 라이프사이클 정의규칙이 모호해진다.
/v1/
tempdir (기본: /tmp/hlsrc)임시파일 I/O 디렉토리 경로 (상대경로인 경우 설치경로 하위에 생성된다.)
Warning
/tmp를tmpfs로 마운트하면 임시파일이 메모리를 사용한다. 메모리 사용 시 예기치 못한 결과가 발생할 수 있으므로 디스크 기반 경로(예: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
bucketS3 bucket
touch현재는 기준으로 접근한 파일의
Last-Modified시간이age를 초과화였다면Last-Modified를 현재 접근시간으로 갱신한다. 접근된 파일이 스토리지 라이프사이클에 의한 자동삭제 정책의 대상이 되는 것을 방지하려는 의도이다.