2017-03-07 1 views
1

라이브 스트림을 만들고 싶습니다. 그리고, 나는 HLS를 사용하고 싶다.HLS 라이브 스트리밍 S3 - 이러한 가정은 맞습니까?

HLS 라이브 스트림은 재생할 모든 파일을 나열하는 '.m3u8'확장명을 가진 기본 재생 목록 파일이라는 것을 알고 있습니다. 모든 파일을 쉽게 사용할 수 없습니다 때문에 그들이에서 와서

하지만은, 라이브 스트림, 그들은 추가됩니다.

나는 이러한 파일과 재생 목록 파일을 호스팅 지금 S3를 사용하고 싶습니다.

이제 S3에서 재생 목록 파일을 업데이트하고 싶습니다. 하지만 실제로는 대신 (this answer에 따라)을 업데이트하는 대신 기존 재생 목록 파일을 대체하려고합니다.

그래서 파일 교체 중에 불감 시간이 없다고 가정합니다. 막 다른 시간이 있다면 어떻게 극복합니까? 이것은 이것을하는 방법입니까, 아니면 이것을 할 수있는 더 좋은 방법이 있습니까?

참고로 NodeJS 서버를 사용하고 있습니다.

* 파일이없는 데드 타임.

답변

1

라이브 스트림을 만들고 싶습니다. 그리고, 나는 HLS를 사용하고 싶다.

왜 HLS입니까? 왜 DASH하지 않니? DASH는 세그먼트 화되어 HLS와 거의 동일하게 구현되지만 코덱 선택과 같은 융통성이 있습니다. 어느 쪽이든 괜찮습니다.하지만 처음부터 시작한다면 DASH와 Media Source Extensions를 사용하는 DASH.js 참조 플레이어 코드를 권하고 싶습니다.

은 내가 HLS 라이브 스트림이 모든 파일을 재생할 수 나열 '.m3u8'확장자를 가진 메인 재생 목록 파일이 그냥 이해합니다.

수정. 모든 파일을 쉽게 사용할 수 없습니다 때문에 그들이에서 와서

그러나, 라이브 스트림, 그들은 추가됩니다.

수정.

이제 S3의 재생 목록 파일을 업데이트하고 싶습니다. 하지만 실제로는 기존의 재생 목록 파일을 업데이트하는 대신 교체 할 것입니다.

예, 다른 답변과 마찬가지로 차이점은 없습니다. 재생 목록 파일은 새로운 전체 복사본으로 덮어 씁니다. S3 API는 파일에 추가하는 것을 허용하지 않습니다. 실제로 같은 부분이 아닌 다중 부분 업로드를 수행하지 않는 한. 어쨌든 라이브 스트림의 재생 목록 파일에는 각 세그먼트가 포함되지 않습니다. 일반적으로 재생 목록에 마지막 세그먼트 만 남겨 두지 만, 이는 다시 이동할 거리를 결정할 때 결정합니다.

따라서 파일 교체 중에 불감 시간이 없다고 가정합니다.

S3는 완전히 새로운 개체가 업로드되고 저장 될 때까지 해당 개체를 대체하지 않습니다. 부분 파일이있는 경우는 결코 없을 것입니다. S3는 일반 파일 시스템과 다릅니다. 또한 후속 업로드가 실패하면 이전 개체가 계속 남아 있습니다.

HLS 및 DASH 플레이어는 재생을 시작하기 전에 재생 목록을 읽고 많은 양의 데이터를 버퍼링합니다. (이는 대기 시간이 오래 걸리는 이유입니다.) 새 세그먼트가 업로드되고 재생 목록에 추가되기까지 수초가 걸릴 것이므로 재생할 데이터가 이미 버퍼에 있어야합니다. 이러한 이유로 인해 업로드가 실패하지 않는 한 드롭 아웃에 대해 걱정할 필요가 없습니다.

참고로 NodeJS 서버를 사용하고 있습니다.

그렇습니까? 나에게 S3를 사용하는 것처럼 들리지만 ... Node.js가이 작업과 관련이 있는지 확실하지 않습니다.

+0

답변 하나만 있습니다. 고마워. 나는이 DASH에 대해 들어 본 적이 없다. 재미 있네. 나는 그것을 들여다 볼 것이다. 너무 많은 포괄적 인 대답에 다시 한번 감사드립니다. –

+0

NodeJS를 사용하여 S3 API에 액세스하여 재생 목록 파일을 대체했습니다. –

+1

iOS는 대시를 지원하지 않지만 대시는 일반적으로 데스크톱에서 더 광범위하게 지원되므로 궁극적으로 두 가지를 모두 지원해야합니다. – duncanwilcox

관련 문제