[javascript] Video.js를 사용하여 동영상 재생 중에 플레이어에 하이라이트 기능 추가하는 방법은 어떻게 되나요?

Video.js는 HTML5 비디오 플레이어 라이브러리로서, 많은 기능과 확장성을 제공합니다. 동영상 재생 중에 특정 부분을 하이라이트 표시할 수 있는 기능을 추가해보겠습니다.

  1. Video.js 라이브러리를 HTML 문서에 추가합니다. <head> 태그 안에 다음 코드를 삽입합니다.
<link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>
  1. 동영상을 플레이어에 추가합니다. <body> 태그 안에 다음 코드를 추가합니다.
<video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264">
    <source src="my-video.mp4" type="video/mp4">
</video>

my-video.mp4 부분은 재생할 동영상 파일의 경로로 변경해야 합니다.

  1. JavaScript 코드를 추가하여 하이라이트 기능을 구현합니다. <body> 태그 아래에 다음 코드를 추가합니다.
var player = videojs('my-video');

player.on('timeupdate', function() {
    var currentTime = player.currentTime();
    var highlights = [
        {
            start: 10,
            end: 20,
            color: 'yellow'
        },
        {
            start: 30,
            end: 40,
            color: 'red'
        }
    ];

    for (var i = 0; i < highlights.length; i++) {
        var highlight = highlights[i];
        if (currentTime >= highlight.start && currentTime <= highlight.end) {
            player.addClass('highlight-' + highlight.color);
        } else {
            player.removeClass('highlight-' + highlight.color);
        }
    }
});

위의 코드에서는 timeupdate 이벤트를 사용하여 재생 시간이 변경될 때마다 하이라이트를 표시하거나 제거합니다. highlights 배열에는 하이라이트할 구간의 시작 시간, 종료 시간, 및 색상이 지정되어 있습니다.

  1. CSS 스타일을 추가하여 하이라이트를 시각적으로 나타냅니다. <head> 태그 안에 다음 코드를 추가합니다.
<style>
.video-js.highlight-yellow .vjs-progress-holder .vjs-play-progress, 
.video-js.highlight-red .vjs-progress-holder .vjs-play-progress {
    background-color: yellow;
}
.video-js.highlight-red .vjs-progress-holder .vjs-play-progress {
    background-color: red;
}
</style>

위 코드에서는 .video-js.highlight-{color} 클래스를 사용하여 해당 구간에 대한 하이라이트 스타일을 정의하고 있습니다. highlight-yellowhighlight-red는 JavaScript 코드에서 지정한 색과 동일해야 합니다.

이제 동영상을 재생하면 지정한 구간에 따라 플레이어에 하이라이트가 표시됩니다. 필요한 구간과 색상을 원하는대로 수정하여 사용할 수 있습니다.

참고 자료: