VideoCtrls 클래스는 HLS.js를 지원하는 HTML5 비디오 요소를 관리하는 JavaScript/TypeScript 기반의 비디오 플레이어 컨트롤러입니다. 재생/일시 정지, 진행 상태 추적, 재생 속도 조절, 전체 화면 모드, 키보드 단축키 등의 기능을 제공합니다.
Hls.js 라이브러리 (HLS 스트리밍 지원)constructor(playerClazName: string, videoSrc: string, id: string | number)
playerClazName: 플레이어 컨테이너의 CSS 선택자.videoSrc: 비디오 소스 URL.id: 비디오 인스턴스의 고유 ID.video: <video> 요소.player: 컨테이너 요소.videoSrc: 비디오 소스 URL.progress, progressBar, progressThumb: 진행 상태 UI 요소.toggle: 재생/일시 정지 버튼.skipButtons: 앞/뒤로 이동 버튼.ranges: 볼륨 및 재생 속도 조절 슬라이더.timeDuration: 비디오 총 길이를 표시하는 요소.progressBoxEl: 진행 바 UI 컨테이너.hls: Hls.js 인스턴스.id: 비디오 인스턴스 ID.mousedown: 마우스 이벤트 상태 플래그.videoPlay(): 비디오 재생.videoPause(): 비디오 일시 정지.togglePlay(): 재생/일시 정지를 전환.updateButton(): 재생/일시 정지 버튼 아이콘 업데이트.handleProgress(): 비디오 재생 진행도 업데이트.scrub(event: any): 진행 바 클릭 시 이동.skip(event: any): 앞/뒤로 이동 버튼 클릭 처리.handleSkip(value: number): 특정 초만큼 이동.updateProgress(value: number): 진행 바 업데이트.handleRangeUpdate(event: any): 볼륨 및 재생 속도 조절.handlePlayBackRate(value: number): 재생 속도 설정.fullScreen(): 전체 화면 모드로 전환.handleKeyDownEvent(event: KeyboardEvent): 키보드 단축키 지원 (ArrowLeft, ArrowRight, Enter, Space).videoDestroy(): HLS.js 리소스 해제.handleTimeUpdate(percent: number, _paused?: boolean): 비디오 재생 위치 업데이트.addEventListeners(): UI 요소에 필요한 이벤트 리스너 추가.click: 재생/일시 정지, 탐색, 진행 상태 업데이트 처리.mousemove: 진행 상태 UI 업데이트.keydown: 키보드 단축키 (ArrowLeft, ArrowRight, Enter, Space) 지원.change/mousemove: 볼륨 및 재생 속도 조절.HLS(HTTP Live Streaming)는 애플(Apple)이 개발한 스트리밍 프로토콜로, 네트워크 상태에 따라 자동으로 비디오 품질을 조정하는 기능을 제공합니다. .m3u8 파일 형식으로 제공되며, 다양한 환경에서 실시간 및 주문형 비디오 스트리밍을 지원합니다.
Hls.js는 이러한 HLS 스트리밍을 HTML5 <video> 요소에서 실행할 수 있도록 도와주는 JavaScript 라이브러리입니다. VideoCtrls 클래스는 이 라이브러리를 활용하여 .m3u8 형식의 비디오를 원활하게 재생할 수 있도록 구현되었습니다.
VideoCtrls 클래스에서 HLS.js의 역할Hls.isSupported()를 통해 HLS.js가 지원되는 환경인지 확인hls.loadSource(this.videoSrc);를 사용해 .m3u8 파일을 로드hls.attachMedia(_video);로 HTML5 비디오 요소에 연결하여 재생 가능하도록 설정hls.on(Hls.Events.ERROR, callback);을 통해 스트리밍 중 발생하는 오류 처리const videoController = new VideoCtrls(".video-player", "video.m3u8", 1);
이 코드는 지정된 소스와 ID를 가진 비디오 플레이어를 초기화하고 모든 필수 컨트롤 및 이벤트 리스너를 추가합니다.
Hls.js를 사용하여 HLS 스트리밍을 지원합니다..m3u8 형식을 기본적으로 지원하는 브라우저와 호환됩니다.VideoCtrls 클래스는 웹 애플리케이션에서 비디오 재생을 제어할 수 있도록 설계된 사용자 지정이 가능한 비디오 컨트롤러입니다.
