Video.jsでHLS/MPEG-DASH対応Playerを作る
JavaScriptのVideo.jsを使うとHLSとMPEG-DASHに対応したplayerが簡単に作れそうだったので作ってみた。
今回使ったVideo.jsの基本機能をまとめていく。
目次
作ったplayer
Video URLにHLS or MPEG-DASHのManifestファイルのURLを指定してLoadボタンを押すと再生を開始する。デフォルトではHLSのURLを読み込むようにしている。
Video.js CDN
以下のように書くとCDN経由でVideo.jsを読み込むことができる。
<head> <link href="https://vjs.zencdn.net/7.8.4/video-js.css" rel="stylesheet" /> <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> </head>
Player生成
video-js
タグでplayerを作ることができる。ここに動画が表示される。
<video-js id=videoPlayer class="vjs-fluid vjs-default-skin vjs-big-play-centered mx-auto"></video-js>
vjs-fluid
はロードしたビデオのアスペクト比を自動で計算してplayerに反映してくれる。vjs-big-play-centered
はプレイボタンをplayerの中心に配置してくれる。mx-auto
はBootStrapのクラスで画面の中央にplayerを配置してくれる。
classの他にも色々なattributeを付けることでplayerを定義できる。
例えば、
controls
を定義するとplayerにコントロールパネルが付与される。width=640
height=480
のように書くとplayerの大きさを定義できる。
これらのパラメータはJavaScript側でも設定することができる。
playerはvideo
タグでも作れるがVideo.jsの公式ドキュメトによるとvideo-js
タグを使う方が望ましいとのこと。
You can use a video-js element instead of video. Using a video element is undesirable in some circumstances, as the browser may show unstyled controls or try to load a source in the moments before the player initialises, which does not happen with the video-js custom element.
Tutorial: setup | Video.js Documentation
Playerオブジェクト生成
JavaScript側でplayerを制御するためにオブジェクトを生成する。
var player = videojs('videoPlayer', { autoplay : false, loop : false, controls : true, preload : 'auto', playbackRates : [0.5, 1, 1.5, 2] });
videojs
の第一引数はvideo-js
タグのidを指定する。- 第二引数には先に説明したplayerに関するattributeを付与することができる。
Playerに再生する動画を設定
src()
を使うと再生する動画を指定できる。
player.src({ type: "application/x-mpegURL", src: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8" });
type
は再生する動画のmimeTypeを指定src
はHLSもしくはMPEG-DASHのManifestファイルのパスを指定
HLSで再生する場合、mimeTypeはapplication/x-mpegURL
、MPEG-DASHで再生する場合はapplication/dash+xml
を設定する。
Playerで動画を再生
play()
を呼ぶと動画の再生が開始される。
player.play()
play()
を呼ばないと動画のロードだけ実行して再生待ち状態になる。