Azure Blob Storage에서 비디오 스트리밍
<video>
태그를 삽입하고 Blob URL을 가리키기만 하면 됩니다(Blob은 공개적으로 액세스할 수 있음). 글쎄, 그것은 그렇게 간단하지 않았습니다. 다음은 비슷한 작업을 수행해야 하는 경우 도움이 될 수 있는 몇 가지 문제입니다.우리는 왜 기다리고 있습니까?
첫 번째 순진한 시도인 Blob URL을 가리키는
<video>
태그의 경우 재생하기 전에 전체 비디오 파일을 먼저 다운로드하려고 시도하고 있었고 스트리밍하려는 비디오가 너무 커서 허용할 수 없는 것으로 나타났습니다.Full video download took 43 seconds, not great...
스트리밍의 경우 요청에서 전체 비디오 대신 한 번에 데이터 범위를 지정해야 합니다. 이는 HTTP 206 부분 콘텐츠 응답을 반환하는
Accept-Ranges
HTTP 헤더를 통해 지원됩니다. 이에 대한 지원은 Azure 저장소 서비스version '2011-08-18'가 나올 때까지 제공되지 않았기 때문에 전체 파일이 먼저 다운로드되었습니다. SDK 또는 REST API(x-ms-version
헤더를 통해)를 사용할 때 버전을 지정할 수 있지만 URL에서 <video>
태그를 가리키고 싶었던 공개 익명 액세스의 경우에는 이것이 옵션이 아니었습니다.전역 기본 버전 설정
대신 SDK 중 하나 또는 'Set Blob Service Properties' REST API 메서드를 사용하여 계정 수준에서 전역적으로 기본 버전을 설정할 수 있습니다. 이것은 hinted at here 이지만 특히 공용 익명 액세스에 대해 문서에서 완전히 설명되지 않은 부분입니다. 버전을
2011-08-18
이상으로 설정하여 REST/SDK 호출을 수행하면 스토리지 계정이 이제 범위 요청을 지원하고 스트리밍이 예상대로 작동합니다.blobServiceClient.setProperties({
defaultServiceVersion: "2021-04-10"
})
.then(res => console.log("Set Properties response", res))
.catch(err => console.error("Set Properties error", err));
How to set the default service version via the JavaScript SDK.
With the correct default storage version set, the video can start playing immediately (note the response status code for the video).
Note: To set the default version you will probably need a
PUT
CORS rule on your storage account and a role assignment for the identity making the call.Storage Account Contributor
should do the trick.
보너스: 부분 콘텐츠 응답을 통해 사용자가 비디오를 스크러빙할 수도 있습니다.
컨텐츠 타입
알아야 할 또 다른 문제는 Blob의 콘텐츠 유형이 올바르게 설정되었는지 확인하는 것입니다. 이것은 일반적으로 업로드 중에 적절하게 설정되지만
video/...
유형이고 application/octet-stream
와 같은 기본값으로 설정되지 않았는지 확인하십시오.추가 정보
Reference
이 문제에 관하여(Azure Blob Storage에서 비디오 스트리밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/poc275/streaming-videos-from-azure-blob-storage-10gj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)