마스터 재생 목록을 통한 HLS 중복 구성
3502 단어 nginxHLSCloudFrontS3AWS
소개
동영상 전송을 실시하는 구성은 여러 가지 있습니다만,
이번에는 EC2를 2대 만들고 마스터 플레이리스트를 사용하여 HLS를 중복하는 구성을 시도해 보겠습니다.
구성도
구성은 이러한 이미지입니다.
영상의 입력으로부터 전달까지의 경로를 2개 준비해 중복화하는 구조가 됩니다.
Main : 배포 소프트웨어 - EC2 - S3 - CF - Player
Backup : 배포 소프트웨어 - EC2 - S3 - CF - Player
※동영상 파일을 S3에 격납해 라이브 전송하는 방법은, 팀 멤버의 기사에 게재되고 있기 때문에 할애합니다.
➡︎ HLS 라이브 스트리밍 서버 s3 배포
구축의 흐름
시청측의 상정 동작
마스터 재생목록 만들기
Apple Developer Document를 참고로 다음과 같이 작성했습니다.
(이번에는 ABR을 도입하고 있습니다.)
【참고】
Using HTTP Live Streaming
→ "Redundant Streams"
master_playlist.m3u8
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=480x270
https://xxxxxxxxxxxxx.cloudfront.net/main/teststream_a_low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=480x270
https://xxxxxxxxxxxxx.cloudfront.net/backup/teststream_b_low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=960x540
https://xxxxxxxxxxxxx.cloudfront.net/main/teststream_a_mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=960x540
https://xxxxxxxxxxxxx.cloudfront.net/backup/teststream_b_mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,RESOLUTION=1280x720
https://xxxxxxxxxxxxx.cloudfront.net/main/teststream_a_high.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,RESOLUTION=1280x720
https://xxxxxxxxxxxxx.cloudfront.net/backup/teststream_b_high.m3u8
검증
Safari의 개발 모드에서 동영상을 시청합니다.
→ 개발 탭 - 웹 관리자 보기 - 네트워크
정상시
마스터 플레이리스트의 순서가 위에 기술된 메인 스트림이 표시되는 것을 확인할 수 있었습니다.
예상대로 거동이 되었습니다.
장애시
Main/Backup 두 인스턴스 모두에 스트림을 흘리고 있는 상태에서,
Main 인스턴스를 중지합니다.
그 결과 약간의 단절만으로 Backup 스트림의 동영상으로 전환되는 것을 확인할 수 있었습니다.
그건 그렇고, Video.js를 사용하여 Chrome에서 확인한 결과,
전환하는 타이밍에 다음과 같은 메시지가 출력되었습니다.
VIDEOJS: WARN: Problem encountered with the current HLS playlist. Playlist no longer updating. Switching to another playlist.
: 현재 HLS 재생목록에 문제가 발생했습니다. 재생목록이 더 이상 업데이트되지 않습니다. 다른 재생목록으로 전환합니다.
이와 같이 Redundant Streams에서는
일정 기간 재생목록(m3u8 파일)이 업데이트되지 않으면 다른 스트림으로 전환하는 거동이 되는 것을 알았습니다.
브라우저에 따른 차이
위와 같이 Safari에서는 중복은 문제 없고, 장해시에 Backup쪽으로 전환되는 것이 확인되었습니다.
다만, Chrome에서는, 잘 전환할 때와 전환하지 않을 때가 있어, 거동은 안정되지 않았습니다.
결론
이번의 검증을 실시하기 전에는, 인스턴스 정지라고 S3에 플레이리스트와 ts파일이 남아 버려,
플레이어는 S3에 남은 ts 파일을 계속 읽고 동영상이 반복된다고 가정했습니다.
실제로는, 일정 기간 플레이리스트가 갱신되지 않으면 다른 스트림에 전환해 주었으므로, 안심이었습니다.
브라우저에 의한 거동이 다르다는 수수께끼는 아직 남아 있습니다만… … 그것은 또의 기회에.
Reference
이 문제에 관하여(마스터 재생 목록을 통한 HLS 중복 구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ktsuchi/items/32cc1a3a903a976447b7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
VIDEOJS: WARN: Problem encountered with the current HLS playlist. Playlist no longer updating. Switching to another playlist.
이와 같이 Redundant Streams에서는
일정 기간 재생목록(m3u8 파일)이 업데이트되지 않으면 다른 스트림으로 전환하는 거동이 되는 것을 알았습니다.
브라우저에 따른 차이
위와 같이 Safari에서는 중복은 문제 없고, 장해시에 Backup쪽으로 전환되는 것이 확인되었습니다.
다만, Chrome에서는, 잘 전환할 때와 전환하지 않을 때가 있어, 거동은 안정되지 않았습니다.
결론
이번의 검증을 실시하기 전에는, 인스턴스 정지라고 S3에 플레이리스트와 ts파일이 남아 버려,
플레이어는 S3에 남은 ts 파일을 계속 읽고 동영상이 반복된다고 가정했습니다.
실제로는, 일정 기간 플레이리스트가 갱신되지 않으면 다른 스트림에 전환해 주었으므로, 안심이었습니다.
브라우저에 의한 거동이 다르다는 수수께끼는 아직 남아 있습니다만… … 그것은 또의 기회에.
Reference
이 문제에 관하여(마스터 재생 목록을 통한 HLS 중복 구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ktsuchi/items/32cc1a3a903a976447b7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)