実験:HLSの理解のためにストリーミング動画をダウンロード〜フリーウェアのみでJable.TVを保存してみた

プログラミング Linux
プログラミング

ストリーミング動画の配信については、YouTubeが当たり前のコンテンツとなって久しいですが、一昔前まではネット環境も含めて特殊な環境にある人だけが利用できるコンテンツだったと思います。今ではすっかり一般化してますし、配信サイトもたくさんあります。

HLSの技術は当たり前になっているので、色々なコンテンツがインターネット上に存在します。最近HLSについては学習してみたので、実験をしてみることにしました。技術本で学習するのも良い方法ですが、既存のサイトを分析して組み立てていくアプローチも有効です。

Jable.TVという動画配信サイトがあります。無料で観られる変わりに、広告が出てきたりして結構怪しいサイトだったりします。ハッキリ言って扱っているコンテンツから海賊版サイト確定なのでこのサイトを視聴するのはグレーゾーンだと感じます。とりあえず実験(検証)の素材にさせてもらう分には問題ないと思うので、やってみることにします。

これらの手順は他のストリーミング配信の保存も流用できると思うので、一通りの手順を流してみて、より難易度の高い構造にも対応できる様に練習して理解を深めてみると良いでしょう。

サイトのソースを読んで構造を解析

Jableの動画ページをWebブラウザで表示させた後、ソースを表示させて調べてみました。私はHTMLやJavascriptについては、素人では無いけどプログラマーでもデザイナーでもない専門ではない立ち位置の人です。それでも基礎知識さえ身に着けていればなんとなく構造はわかります。

どうやらソースを読んでみた限り、JableではHLSの配信URLを、Javascriptの変数に格納させているだけみたいなので、Webブラウザでソースを表示させて、変数(hlsUrl)に定義されているところを見つければ、HLS配信のURLが特定出来るということがわかりました(単純なサイト構造です)。

Jable.TVのソースから追う

動画ページのソースをWebブラウザで表示させた状態で検索機能を使って、「hlsUrl」を検索すると配信URLが簡単に見つけられることがわかりました。これが確実で手間も少ないと思いますし、Jable.TVの構造を理解する一番の近道なのでおすすめです。

解析ツール:コンソールログで表示させる

もう一つの方法は、Jableの任意の動画ページを開き、F12でブラウザのコンソールを開き、

console.log(hlsUrl)Code language: JavaScript (javascript)

を実行すると、hlsUrlという変数に格納されたストリーミングURLが表示されます。この方法でも配信URLを入手することができました。

console.log(hlsUrl)でURLを表示させた例

省力化:Javascriptブックマークレットを使う

理屈がわかったら、ブックマークレットしておくと何度も利用できて利便性は上がります。簡単なブックマークレットですが、手間がかからないのでこういう手法も経験しておくと他の場面でも応用は効くでしょう。

ブックマークレットについてはここでは詳しくは解説しませんが、ブラウザーのお気に入りにコンパクトなJavascript命令を登録しておく仕組みです。ブックマークレット化しておくと手軽に実行できるので繰り返し使う操作では便利です。

javascript: prompt('hlsUrl=', hlsUrl);Code language: JavaScript (javascript)

個人的にはAmazonのASINを表示させるブックマークレットを良く使用します。今回はそれで覚えた機能を実験的に簡易流用してみただけです。

ブックマークレットを実行した例

Jableの場合はページタイトルが動画タイトルと同じっぽいので、ブックマークレットでページタイトルも取得する様に改良したら利便性は上がることが想像できます。簡易的に実験しているだけでも工夫の余地があることに気づいて色々応用出来ます。

javascript: let page_title = document.querySelector(title).innerText; prompt(page_title, hlsUrl);Code language: JavaScript (javascript)

それはさておき、Jable.TVで入手したhlsUrlの値(m3u8ファイルのURL)をコピーしておいて、次はVLCメディアプレーヤーでそのhlsUrlを再生してみます。

実験:VLCメディアプレーヤーでJable.TVを再生してみる

コピーしておいたhlsUrlを、VLCメディアプレーヤーで再生してみます。ストリーミング配信の再生は簡単で、VLCメディアプレーヤーを起動し、Ctrl+V(メディア−クリップボードからURLを開く)で実行できます。

VLCで直にストリーミング再生成功

問題なく再生できました。簡単すぎるので拍子抜けしてしまう感じです。VLCメディアプレーヤーは素晴らしいOSSソフトウェアですね。

有害かも知れないJableのサイト広告をすり抜けてストリーミング動画を直接VLCメディアプレーヤーで再生できました。この方法で視聴すれば海賊版サイトであるJableの収益にはならないハズです。海賊版サイトのくせにちゃっかり動画の左上に「jable.Tv」とサインを入れてるのがなんともですね。

このブログで取り上げてもアクセス数も知れてますから影響は無いと思いますが、Jableは構造が簡単なので将来的に仕組みが変更される(対策される)可能性は高いと思います。とりあえず現時点では簡単にhlsUrlを取り出して、VLCメディアプレーヤーで再生することができることが実験してみてわかりました。

実験:Jable.TVを保存してみる

次はJableのHLS動画を保存してみます。

個人的に、HLS動画を保存するのに手軽で便利なソフトウェアは、YtDownloaderだと思っています。マルチプラットフォーム対応なので、Windowsをはじめ、Linuxでも同じルック&フィールで使用できます。

YtDwonloaderは有名なyt-dlpのGUIフロントエンドで、コマンド操作ナシで動画を保存できる便利なオープンソースソフトウェアです。使い方は簡単で、hlsUrlをコピー(クリップボードに記憶)した状態で、下画面の緑のボタンをクリックするだけです。

但し、コアエンジン部であるyt-dlpがJable.tvに対応していない為、動画ページにある動画タイトルなんかは取得出来ません。今回は直接HLSファイルを指定しているので仕方ありません。

yt-dlpは強力なので対応している配信サイトの場合は、動画ページのURLを指定すればページを解析して動画のタイトルなんかも取得してくれます。Jable.TVはそこまでメジャーじゃないみたいですね。

タイトル(ファイル名)は手動で指定することになります。この辺りは実験なので適当に済ませてみます。

これで問題なくJable.TVの動画をダウンロード(保存)出来ました。ちょっと調べて仕組みが理解出来てきたら簡単に(無料で)ダウンロード(保存)できることが検証できました。やばいですね。

実験が終わったらダウンロードしたファイルは削除しておくこと!Jable.TVはいわゆる海賊版動画配信サイトなので日本の法律的には違法サイトです。

YtDownloaderについて

YtDownloaderについては、別途記事にしてました。良かったら参考にしてみてHLSの仕組みについての理解を深めてみて下さい。今回の実験素材は微妙ですが、覚えた知識と経験は無駄にはならないと思います。

ちなみにYtDownloaderでTverの配信も保存できました。Tverは映像と音声が別配信になっているみたいなのですが、コアエンジンであるyt-dlpがTverに対応しているので、配信ページの解析からキッチリ対応してくれます。つまりTverの場合は配信動画のタイトルなんかも自動で取得されます。メジャーな動画配信サイトはyt-dlpが対応しているのでページの解析からやってくれます。

最後にまとめ

今回、Jable.TVというストリーミング動画配信サイトの解析を簡単にやってみて、VLCメディアプレーヤーで直に再生してみました。またYtDownloaderで保存することも実験してみました。今回の検証はいずれも成功です。

実験しているとHLS配信の仕組みもなんとなく分かってきて、実はそれほど難しい技術は必要ないということも見えてきました。重要なのはHLS動画を配信するサーバーが処理能力的にもネットワーク的にもある程度以上の性能が必要だという点です。後はffmpeg等の使い方、プレーヤーの埋め込み方法などの知識でしょう。企業や団体組織内で研修動画を社員に視聴させるなど、直接VLCメディアプレイヤーで視聴させるなら配信サーバー側だけの知識で十分事足りる便利な技術ですね。

HLSという技術が身近になっていることから動画配信サイトが沢山ありますが、扱うコンテンツは違法性のある(海賊版)ものだったりするので、いたちごっこになっている様です。ダウンロードはグレーなので、ダウンロード実験が終わったら削除して置きましょう

海賊版配信サイトも、収益が見込めなくなればサイト運営を止めると思うのですが、いかんせん釣られて収益化の仕組みに誘導されてお金を支払う人もいるんだと思います。でなければ海賊版動画配信サイトを運営し続けられるはずがありません。利益が出るから続けるのでしょう。

動画コンテンツのほとんどは、製作者がいてそれを販売しているものです。正規な製作者の収益につながる方法で(DMMとかから)入手して健全な市場が維持できる様に心がけたいものです。

私は技術的な興味と探究心から、今回、Jable.TVの直接視聴とダウンロード(保存)を実験してみた次第です。決して海賊版サイトであるJableからの動画ダウンロードを推奨する訳ではありませんので注意して下さい。

今回の検証でだいたいHLSによる動画配信が分かってきたので、配信の仕組みをLAN内で構築して、勤務先組織内で動画研修なんかを広めてみたいと考える様になりました。ffmpegでhlsファイルを作る方法を調べてみようと思います。

コメント

タイトルとURLをコピーしました