hls.jsを使ったライブストリーミング配信をつくってみる(前編)

2020年9月6日日曜日

HTTP Live Streaming Tools m3u8 mp4 ストリーミング 動画

t f B! P L

 新型コロナウイルスの影響で、集合型の研修などの開催が困難になってきており、動画の需要が増えている印象です。

実際に社内研修でも動画配信をする話も出ています。

そこで、今回はHTML5から使えるようになった<video>タグと動画配信システムを構築してみようと思います。

おおまかな手順は以下の通り

  1. iMovieなどで編集した動画ファイルを用意する(MP4形式)
  2. MP4をストリーミング形式で使用するm3u8ファイルに変換する
  3. hls.jsを使ってコーディングする

iMovieなどで編集した動画ファイルを用意する(MP4形式)

これはこちらの記事(https://financial-pharmacist.blogspot.com/2020/08/blog-post.html)で以前に動画の作り方については簡単に触れているので今回は割愛します。

MP4をストリーミング形式で使用するm3u8ファイルに変換する

m3u8についてはWikipediaに以下のように書いてあります。

M3Uフォーマットの一般的な使用方法として、単一のエントリにURLを記述することがあげられる。このファイルのおかげで、ストリーミングへのアクセス、ウェブサイトからのダウンロード、インターネットラジオの視聴が容易になる。

iOSHTTP Live Streamingフォーマットは"M3U" and "M3U8" ファイルをもとにしている。

ストリーミングの特長は以下の通り。こちらもWikipediaより。

通常、ファイルはダウンロード完了後に開く動作が行われるが、動画のようなサイズの大きいファイルを再生する際にはダウンロードに非常に時間がかかってしまい、特にライブ配信では大きな支障が出る。そこで、ファイルをダウンロードしながら、同時に再生をすることにより、ユーザーの待ち時間が大幅に短縮される。

見るのも快適ですが、少しずつダウンロードしながら再生するので、通信量の点でも見た部分のダウンロードしかされないのでメリットがあります。

というわけで、ストリーミング用にmp4をm3u8に変更する必要があります。

私はmacを使っているので、Appleの公開している「HTTP Live Streaming Tools」を使います。ffmpegというソフトでもできるらしいですが、やっていません。


「HTTP Live Streaming Tools」のインストール

https://developer.apple.com/streaming/ こちらのページからダウンロードできます。
下の画像のStarting Tools内のView downloadsをクリック。


次の画面です。HTTP Live Streaming ToolsをクリックするとダウンロードをできるようになるのでHTTP Live Streaming Tools xxxxx.dmgをダウロードします。




インストーラをダブルクリックしてインストールします。/usr/local/share/hlstoolsにインストールされます。ターミナルから起動できるようになりました。


ターミナルでHTTP Live Streaming Toolsを起動して動画形式を変換する

前提として。
mp4ファイルはusers\(username)\moviesに保存してます。
ターミナルでカレントディレクトリをmoviesに移動してから次の処理をします。
変換後のデータ出力先としてusers\(username)\movies\hlsを作成しておきます。
以上、前提終わり。

 ターミナルで以下のコマンドを入れます。
mediafilesegmenter -V samplemovie.mp4
すると
"samplemovie.mp4" can be segmented
と表示されればsamplemovie.mp4が有効なファイルであることが確認できます。

次に変換をします。以下のようにターミナルに入力します。
 mediafilesegmenter -f hls -i index.m3u8 -B media- app.mp4
成功すると、フォルダ内にapp.plist、iframe_index.m3u8、prog_index.m3u8、fileSequence1.tsから連番のファイルサイズに応じた分の数の.tsファイルが出力されます。

以上で、MP4からm3u8ファイルへの動画の変換を終わりです。

あまりにも長くなりすぎたので、後編のコーディングは別のエントリーで書きます。

追記

管理人

自分の写真
薬剤師・エンジニア 公認スポーツファーマシスト 医療情報技師

アクセスカウンター

カスタムアーカイブ

検索

最新記事

QooQ