플레이어 개발자 기본 사항: 사용자 정의 플러그인 - 코드 변환
단계
이 단계에서는 단일 HTML 페이지에서 Brightcove Player를 향상시키는 코드를 작성했다고 가정합니다.
- JavaScript 및 CSS에 대한 빈 파일을 만듭니다. 모범 사례로서 파일 이름은 플러그인의 기능을 반영해야합니다. 비디오에서 back-forward-buttons.js과 back-forward-buttons.css사용됩니다.
- HTML 페이지에서 CSS를 복사하고
<style>
태그를 지정하고 전용 CSS 파일에 붙여 넣습니다. - HTML 페이지에서 JavaScript를 복사하고
<script>
태그를 지정하고 전용 JavaScript 파일에 붙여 넣습니다. - JavaScript 파일에서 다음과 유사한 코드를 찾습니다.
videojs.getPlayer('myPlayerID').ready(function () {
videojs.registerPlugin('backForwardButtons', function() {
- 원본 HTML 페이지에서
<style>
차단하고 CSS 파일에 대한 링크로 바꿉니다.<link href="back-forward-buttons.css" rel="stylesheet">
- 원본 HTML 페이지에서
<script>
플레이어의index.min.js
파일, 두 번째 추가<script>
플러그인의 자바 스크립트에 링크 할 태그 :<script src="back-forward-buttons.js"></script>
- 원본 HTML 페이지에서
<script>
차단하고 다음을 수행하는 코드를 바꿉니다.- 다음을 사용하여 플레이어에 대한 참조를 가져옵니다.
getPlayer()
과ready()
관련 익명 이벤트 처리기 함수가있는 메서드. - 이벤트 핸들러 함수에서 이름이
myPlayer
그만큼this
이 컨텍스트에서 플레이어를 나타내는 키워드입니다. - 플러그인을 호출하십시오.
<script> videojs.getPlayer('myPlayerID').ready(function() { var myPlayer = this; myPlayer.backForwardButtons(); }); </script>
- 다음을 사용하여 플레이어에 대한 참조를 가져옵니다.
코드 완성
기본 HTML 페이지
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<link href="back-forward-buttons.css" rel="stylesheet">
</head>
<body>
<video id="myPlayerID"
data-video-id="5992439742001"
data-account="1752604059001"
data-player="default"
data-embed="default"
data-application-id=""
controls=""
width="640" height="360"></video>
<script src="//players.brightcove.net/1752604059001/default_default/index.min.js"></script>
<script src="back-forward-buttons.js"></script>
<script>
videojs.getPlayer('myPlayerID').ready(function() {
var myPlayer = this;
myPlayer.backForwardButtons();
});
</script>
</body>
</html>
사용자 정의 플러그인의 자바 스크립트
videojs.registerPlugin('backForwardButtons', function() {
var myPlayer = this,
jumpAmount = 5,
controlBar,
insertBeforeNode,
newElementBB = document.createElement('div'),
newElementFB = document.createElement('div'),
newImageBB = document.createElement('img'),
newImageFB = document.createElement('img');
// +++ Assign IDs for later element manipulation +++
newElementBB.id = 'backButton';
newElementFB.id = 'forwardButton';
// +++ Assign properties to elements and assign to parents +++
newImageBB.setAttribute('src', '/assets/samples/back-forward-buttons/back-button.png');
newElementBB.appendChild(newImageBB);
newImageFB.setAttribute('src', '/assets/samples/back-forward-buttons/forward-button.png');
newElementFB.appendChild(newImageFB);
// +++ Get controlbar and insert elements +++
controlBar = myPlayer.$('.vjs-control-bar');
// Get the element to insert buttons in front of in conrolbar
insertBeforeNode = myPlayer.$('.vjs-volume-panel');
// Insert the button div in proper location
controlBar.insertBefore(newElementBB, insertBeforeNode);
controlBar.insertBefore(newElementFB, insertBeforeNode);
// +++ Add event listeners to jump back or forward +++
// Back button logic, don't jump to negative times
newElementBB.addEventListener('click', function () {
var newTime,
rewindAmt = jumpAmount,
videoTime = myPlayer.currentTime();
if (videoTime >= rewindAmt) {
newTime = videoTime - rewindAmt;
} else {
newTime = 0;
}
myPlayer.currentTime(newTime);
});
// Forward button logic, don't jump past the duration
newElementFB.addEventListener('click', function () {
var newTime,
forwardAmt = jumpAmount,
videoTime = myPlayer.currentTime(),
videoDuration = myPlayer.duration();
if (videoTime + forwardAmt <= videoDuration) {
newTime = videoTime + forwardAmt;
} else {
newTime = videoDuration;
}
myPlayer.currentTime(newTime);
});
});
사용자 정의 플러그인의 CSS
#backButton img{
margin-top: -7px;
height: 45px;
width: 45px;
cursor: pointer;
}
#forwardButton img{
margin-top: -7px;
height: 45px;
width: 45px;
cursor: pointer;
}