Video.jsにより動画を再生し、ボタンを作成し、動画再生でスキップします。ボタンなどの処理方法については、「Components」に示します。

Video.jsのボタンの作成

Video.jsのコントロールバー上にテキストによるボタンを作成します。

「index.html」「style.css」は「Video.jsによる動画再生-イベント・プラグイン」と同じファイルになります。

videojsクラスから生成した動画プレイヤーのオブジェクトにgetChild(‘ControlBar’)というメソッドで、コントローラに様々なカスタマイズを施すことができます。getChildメソッドについては、「Adding a Component」に示します。

main.js

console.log('start02');

var player = videojs('video1', {

    //コントローラ表示、アクセスしたら自動再生、事前ロードする(一部ブラウザではできない)
    controls: true,
    preload: 'auto',

    fill: false,
    responsive: true,

    //ローディングの表示
    LoadingSpinner: true,

    //音量は縦に表示
    controlBar: {
        volumePanel: { inline: false },
    }
});
const myButton = player.getChild('ControlBar').addChild('button', {
    controlText: 'My button',
    className: 'vjs-visible-text',
    clickHandler: function (event) {
        videojs.log('Clickedxxx');
    }
});


Video.jsのボタンの実行

ブラウザからURL「http://localhost/videojs-button/」にアクセスし、再生アイコンをクリックし、表示された画面のコントロールバー上の「My button」をクリックします。コンソールに「VIDEOJS: Clickedxxx」と表示されます。

Video.jsのスキップの作成

Video.jsのコントロールバーを日本語化し、スキップアイコンを作成して動画をスキップさせます。

「index.html」「style.css」は「Video.jsによる動画再生-イベント・プラグイン」と同じファイルになります。

main.js

console.log('start01');

const player = videojs('video1', {
    autoplay: false, // 自動再生を無効
    fluid: false, // 動画コンテンツを親要素いっぱいに広げる
    loop: false, // 繰り返し再生無効
    controls: true, // コントローラ表示
    preload: 'auto', // videoタグがロードされた瞬間に動画をダウンロード
    languages: {
        ja: {
            'Play': '再生',
            'Pause': '停止',
            'Play Video': '再生',
            'Mute': '消音',
            'Playback Rate': '再生速度',
            'Picture-in-Picture': 'ピクチャインピクチャ',
            'Fullscreen': '全画面表示',
            'Non-Fullscreen': '通常表示'
        }
    }, // 日本語の言語対応
    language: 'ja' // 言語を日本語に設定
});

// コントローラに10秒戻しボタンと10秒送りボタンを追加
const rewindButton = player.getChild('ControlBar').addChild('button');
const forwardButton = player.getChild('ControlBar').addChild('button');
rewindButton.controlText('5秒戻し');
forwardButton.controlText('5秒送り');

// アイコンを設定
player.getChild('ControlBar')
    .el()
    .insertBefore(
        rewindButton.el(),
        player.getChild('ControlBar').getChild('pictureInPictureToggle').el()
    )
    .innerHTML = `<img src='img/rewind.jpg' width=20 />`;

player.getChild('ControlBar')
    .el()
    .insertBefore(
        forwardButton.el(),
        player.getChild('ControlBar').getChild('pictureInPictureToggle').el()
    )
    .innerHTML = `<img src='img/forward.jpg' width=20 />`;

// スキップ処理を追加
rewindButton.el().addEventListener('click', () => {
    player.currentTime(player.currentTime() - 5);
});
forwardButton.el().addEventListener('click', () => {
    player.currentTime(player.currentTime() + 5);
});

Video.jsのスキップの実行

ブラウザからURL「http://localhost/videojs-skip/」にアクセスし、再生アイコンをクリックし、表示された画面のコントロールバー上のスキップアイコンをクリックします。スキップアイコンに従って5秒前後にスキップします。