<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LiveInstantly, LLC.</title><link>https://www.liveinstantly.jp/resources/tags/dash.js/</link><description>Recent content in dash.js on LiveInstantly</description><generator>Hugo Generator - gohugo.io</generator><language>ja</language><copyright>Copyright &amp;copy; 2020-2022 LiveInstantly, LLC. All rights reserved.</copyright><atom:link href="https://www.liveinstantly.jp/resources/tags/dash.js/index.xml" rel="self" type="application/rss+xml"/><item><title>Resources: シンプルな Web プレイヤーの開発と展開</title><link>https://www.liveinstantly.jp/resources/blog/build-simple-web-player/</link><pubDate>Thu, 15 Oct 2020 09:00:00 +0000</pubDate><guid>https://www.liveinstantly.jp/resources/blog/build-simple-web-player/</guid><description>&lt;img src="https://www.liveinstantly.jp/resources/blog/build-simple-web-player/featured-screenshot_hu3a278b01d81d369de8c102c773db7fa8_104534_640x0_resize_q75_catmullrom.jpg" width="640" height="427"/>&lt;h2 id="ストリーミング-プレイヤーの開発">ストリーミング プレイヤーの開発&lt;/h2>
&lt;p>&lt;a href="../video-streaming-introduction/">ビデオストリーミング技術の紹介&lt;/a>
でも触れたように、
現在、ビデオストリーミングは Web 技術との親和性が高く、ストリーミングビデオは Web ブラウザー上で、
JavaScript を使って開発されたプレイヤーで再生することができるようになっています。&lt;/p>
&lt;p>普及している2つのストリーミングプロトコル (HLS, MPEG-DASH) のビデオストリームを再生することができる、
実績のあるオープンソースのプレイヤーがあります。以下のプレイヤーです。&lt;/p>
&lt;ul>
&lt;li>HLS の再生: &lt;a href="https://hls-js-dev.netlify.app/demo" target="_blank">hls.js&lt;/a>
| &lt;a href="https://github.com/video-dev/hls.js/" target="_blank">Github&lt;/a>
&lt;/li>
&lt;li>MPEG-DASH の再生: &lt;a href="https://dashif.org/tools/dashjs/" target="_blank">dash.js&lt;/a>
| &lt;a href="https://github.com/Dash-Industry-Forum/dash.js" target="_blank">GitHub&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>この記事では、これらを使って、Web プレイヤーをホストするページを開発します。&lt;/p>
&lt;h3 id="hlsjs-プレイヤーシンプルなコード">hls.js プレイヤー：シンプルなコード&lt;/h3>
&lt;p>もっともシンプルな hls.js の再生プレイヤーのページのコードは以下の通りです。
hls.js が提供する Hls クラスを使ってビデオプレイヤーを初期化し、再生したい HLS ストリームの URL を
プレイヤーにロードすることでビデオストリームの再生をトリガーすることができます。&lt;/p>
&lt;p>ビデオプレイヤーを表示するためには、プレイヤーを表示するための HTML 要素をアタッチします。&lt;/p>
&lt;p>以下のコード例では、&lt;code>&amp;lt;video&amp;gt;&lt;/code> タグで HLS の再生をネイティブサポートしているプレイヤー (Safari など) も
対応できるようにしてあります。その場合は、HLS ストリームの再生に hls.js を使いません。&lt;/p>
&lt;p>より細かなコントロールを行うためのアプリケーションの開発を行うには、Hls クラスの API の詳細を確認します。
&lt;a href="https://hls-js-dev.netlify.app/api-docs/hls.js.hls.html" target="_blank">hls.js API ドキュメント&lt;/a>
を参照します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">body&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- プレイヤーのコンテナ要素 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;hls-js-container&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">video&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;hls-js-player&amp;#34;&lt;/span> &lt;span class="na">controls&lt;/span> &lt;span class="na">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;640px&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">video&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- hls.js 本体のロード --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;https://cdn.jsdelivr.net/npm/hls.js@1&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- hls.js プレイヤー制御のアプリケーションコード --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="kd">function&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">video&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getElementById&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;hls-js-player&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">videoSrc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">Hls&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">isSupported&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// HTML Media Source Extension (MSE) をサポートするブラウザー向け (hls.js を利用する)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">var&lt;/span> &lt;span class="nx">hls&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">Hls&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">hls&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">loadSource&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">videoSrc&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">hls&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">attachMedia&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">video&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">video&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">canPlayType&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;application/vnd.apple.mpegurl&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ブラウザーの &amp;lt;video&amp;gt; タグがネイティブで HLS をサポートするブラウザー向け
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">video&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">src&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">videoSrc&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">body&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="dashjs-プレイヤーシンプルなコード">dash.js プレイヤー：シンプルなコード&lt;/h3>
&lt;p>もっともシンプルな dash.js の再生プレイヤーのページのコードは以下の通りです。
dash.js が提供する MediaPlayer クラスを使ってビデオプレイヤーを初期化し、
再生したい MPEG-DASH ストリームの URL をプレイヤーにロードすることで
ビデオストリームの再生をトリガーすることができます。&lt;/p>
&lt;p>ビデオプレイヤーを表示するためには、プレイヤーを表示するための HTML 要素をアタッチします。&lt;/p>
&lt;p>より細かなコントロールを行うためのアプリケーションの開発を行うには、MediaPlayer クラスや他のクラスの API の詳細を確認します。
&lt;a href="http://cdn.dashjs.org/latest/jsdoc/index.html" target="_blank">dash.js API ドキュメント&lt;/a>
を参照します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">body&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- プレイヤーのコンテナ要素 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;dash-js-container&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">video&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;dash-js-player&amp;#34;&lt;/span> &lt;span class="na">controls&lt;/span> &lt;span class="na">width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;640px&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">video&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- dash.js 本体のロード --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;//cdn.dashjs.org/v4.6.0/dash.all.min.js&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- dash.js プレイヤー制御のアプリケーションコード --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="kd">function&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://dash.akamaized.net/envivio/EnvivioDash3/manifest.mpd&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">player&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">dashjs&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">MediaPlayer&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="nx">create&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">player&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">initialize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;#dash-js-player&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nx">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">body&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="ビデオストリームの再生テスト">ビデオストリームの再生テスト&lt;/h3>
&lt;p>プレイヤーを実装した HTML ページ (index.html などのコンテンツ) を用意した後は、
NGINX で HTML コンテンツをホストすることでローカル環境でも簡単に開発・テストが行えます。&lt;/p>
&lt;p>HTML コンテンツがカレントディレクトリにある状態で、以下のコマンドを実行します。
このコマンド実行では、Docker を使って NGINX をコンテナーでホストします。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker image pull nginx
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker run --name docker-nginx -p 80:80 -d -v .:/usr/share/nginx/html nginx
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>開発・テストが終わったら、以下のコマンドで実行しているコンテナーを停止・削除することができます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker stop docker-nginx &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> docker rm docker-nginx
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="実践的な再生テスト用のプレイヤーアプリケーション">実践的な再生テスト用のプレイヤーアプリケーション&lt;/h3>
&lt;p>以下の要件を満たすアプリケーションを開発しました。
開発したプレイヤーのソースコードは &lt;a href="https://github.com/liveinstantly/simple-test-streaming-player" target="_blank">GitHub リポジトリ&lt;/a>
を参照してください。&lt;/p>
&lt;ul>
&lt;li>ユーザーが入力ボックスに指定したストリームを再生できること&lt;/li>
&lt;li>hls.js と dash.js を手動で切り替えて再生できること&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="./simple-test-player-screenshot.jpg" alt="テスト用のプレイヤーアプリケーション">&lt;/p>
&lt;h2 id="テスト用のストリーミング-プレイヤーの展開-ホスティング">テスト用のストリーミング プレイヤーの展開 (ホスティング)&lt;/h2>
&lt;p>「&lt;a href="../get-started-wowza-streaming-engine/">Wowza Streaming Engine のインストールとセットアップ&lt;/a>
」でも
触れた通り、最新のブラウザーでは、ほぼすべてのブラウザーが HTTP/HTTPS 混在ウェブコンテンツのブラウジングを許可しません。&lt;/p>
&lt;p>今回は、テスト用のプレイヤーを開発したいので、ストリーミングサーバーが HTTPS (TLS) をサポートしない場合でも
ストリーム再生のテストが実行できるように、HTTP/HTTPS の両方でアクセスできるページを簡単に用意します。&lt;/p>
&lt;blockquote>
&lt;p>つまり、HTTP ストリームは HTTP でアクセスしたホストで再生し、HTTPS ストリームは HTTPS でアクセスしたホストで再生します&lt;/p>
&lt;/blockquote>
&lt;h3 id="展開先のサービスの選択">展開先のサービスの選択&lt;/h3>
&lt;p>自宅環境などにサーバーを用意してホストする場合を除いては、一般的にホスティングサービスを利用します。
&lt;a href="https://www.netlify.com/" target="_blank">Netlify&lt;/a>
, &lt;a href="https://vercel.com/" target="_blank">Vercel&lt;/a>
, &lt;a href="https://jp.heroku.com/" target="_blank">Heroku&lt;/a>
などの
よく利用されているホスティングサービスには、無料のプランがあり、これらを使うことが可能です。&lt;/p>
&lt;p>ただし、ここ数年で HTTP サポートを停止し、強制的に HTTPS を利用するように構成されるサービスがほとんどです。&lt;/p>
&lt;p>HTTP/HTTPS の両方でホストが可能で、可能な限り安価で展開をするための方法として、Microsoft Azure Cloud を利用する方法をここでは紹介します。&lt;/p>
&lt;ul>
&lt;li>Azure Storage を 静的 Web サイトをホストする
&lt;ul>
&lt;li>Azure Storage は HTTP/HTTPS の両方のプロトコルでのアクセスをサポートします&lt;/li>
&lt;li>Azure Web App サービスは、Web ホストの動作時間に対して課金されますので割高となりますが、Azure Storage はコンテンツの容量だけしか課金されません&lt;/li>
&lt;li>Azure Static Web App サービスは、HTTPS のみサポートし、HTTP はサポートされません&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Azure CDN を使って Azure Storage にホストした静的 Web サイトを公開する (独自のカスタムドメインを利用する場合のみ)
&lt;ul>
&lt;li>Azure Storage ではカスタムドメインの HTTPS 証明書のサポートをしていないため、独自のカスタムドメインを利用して HTTPS を利用する場合は Azure CDN を利用する必要があります&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="azure-storage-アカウントの作成と静的-web-ホストの設定">Azure Storage アカウントの作成と静的 Web ホストの設定&lt;/h3>
&lt;p>下記の 3 つの作業ステップを Azure ドキュメントの記事を参考に実施します。&lt;/p>
&lt;ul>
&lt;li>Azure Storage アカウントを作成します
&lt;ul>
&lt;li>参照記事: &lt;a href="https://learn.microsoft.com/ja-jp/azure/storage/common/storage-account-create?tabs=azure-portal" target="_blank">ストレージ アカウントを作成する&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>静的 Web サイトをホストするよう構成します
&lt;ul>
&lt;li>参照記事: &lt;a href="https://learn.microsoft.com/ja-jp/azure/storage/blobs/storage-blob-static-website-how-to?tabs=azure-portal" target="_blank">Azure Storage で静的 Web サイトをホストする&lt;/a>
&lt;/li>
&lt;li>参考: &lt;a href="https://learn.microsoft.com/ja-jp/azure/storage/blobs/storage-blob-static-website" target="_blank">概念: 静的な Web サイト&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>アプリケーションの Web コンテンツを Azure Storage にアップロードします
&lt;ul>
&lt;li>参照記事: &lt;a href="https://learn.microsoft.com/ja-jp/azure/storage/blobs/storage-blob-static-website-how-to?tabs=azure-portal#upload-files" target="_blank">ファイルをアップロードします&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>静的 Web サイトを HTTP/HTTPS の両方でアクセスできるようにするためには、以下の設定を行います。&lt;/p>
&lt;ul>
&lt;li>[設定] -&amp;gt; [構成] -&amp;gt; [安全な転送が必須] = &amp;ldquo;&lt;strong>無効&lt;/strong>&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="./azure-storage-settings-unsecure.jpg" alt="Azure Storage 設定">&lt;/p>
&lt;p>設定が完了すると、以下の URL でアクセスすることができるようになります。&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://storageaccountname.zXX.web.core.windows.net/" target="_blank">http://[ストレージアカウント名].z[XX].web.core.windows.net/&lt;/a>
&lt;/li>
&lt;li>&lt;a href="https://storageaccountname.zXX.web.core.windows.net/" target="_blank">https://[ストレージアカウント名].z[XX].web.core.windows.net/&lt;/a>
&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>[ストレージアカウント名] および [XX] は作成したアカウントに合わせて置き換えてください。&lt;/p>
&lt;/blockquote>
&lt;h3 id="azure-cdn-の設定-オプション">Azure CDN の設定 (オプション)&lt;/h3>
&lt;p>今回は、独自のドメインを使ってホストを HTTP/HTTPS で公開したいので以下のような構成の作業を行います。&lt;/p>
&lt;p>下記の 3 つの作業ステップを Azure ドキュメントの記事を参考に実施します。&lt;/p>
&lt;ul>
&lt;li>静的な Web サイトを Azure CDN と統合し、CDN エンドポイントで公開します
&lt;ul>
&lt;li>Azure CDN の種類を選び、CDN プロファイルを作成します&lt;/li>
&lt;li>CDN のプロファイルが作成できたら、静的 Web サイトを公開するエンドポイントを作成します&lt;/li>
&lt;li>参照記事: &lt;a href="https://learn.microsoft.com/ja-jp/azure/storage/blobs/static-website-content-delivery-network" target="_blank">静的な Web サイトを Azure CDN と統合する&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>独自のカスタムドメインを CDN エンドポイントに追加します
&lt;ul>
&lt;li>参照記事: &lt;a href="https://learn.microsoft.com/ja-jp/azure/cdn/cdn-map-content-to-custom-domain?tabs=azure-dns%2Cazure-portal%2Cazure-portal-cleanup" target="_blank">カスタム ドメインをエンドポイントに追加する&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>CDN エンドポイントに追加した カスタムドメインで HTTPS が有効となるよう構成します
&lt;ul>
&lt;li>有効となるよう構成すると、バックグラウンドで自動的に、ドメインの所有を検証し、カスタムドメインのたｍの HTTPS 証明書を発行します&lt;/li>
&lt;li>10~30 分ほど時間がかかります&lt;/li>
&lt;li>参照記事: &lt;a href="https://learn.microsoft.com/ja-jp/azure/cdn/cdn-custom-ssl?tabs=option-1-default-enable-https-with-a-cdn-managed-certificate" target="_blank">Azure CDN カスタム ドメインで HTTPS を構成する&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="まとめ-ホストされたテスト用プレイヤーアプリケーションのサイト">まとめ: ホストされたテスト用プレイヤーアプリケーションのサイト&lt;/h2>
&lt;p>今回は、HLS と MPEG-DASH ストリームの再生のためのシンプルなテスト用プレイヤーアプリケーションを作成し、
HTTP/HTTPS の両方でアクセスできるホスト上に独自ドメインを使って展開しました。&lt;/p>
&lt;p>以下のサイトで展開しています。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>HTTP&lt;/strong>: &lt;a href="http://testplayer.demo.liveinstantly.cloud/" target="_blank">http://testplayer.demo.liveinstantly.cloud/&lt;/a>
&lt;/li>
&lt;li>&lt;strong>HTTPS&lt;/strong>: &lt;a href="https://testplayer.demo.liveinstantly.cloud/" target="_blank">https://testplayer.demo.liveinstantly.cloud/&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>また、開発したプレイヤーのソースコードは &lt;a href="https://github.com/liveinstantly/simple-test-streaming-player" target="_blank">GitHub リポジトリ&lt;/a>
を参照してください。&lt;/p>
&lt;p>今後は、様々なコンテンツの再生のためのプレイヤーのオプションなど設定項目なども入力できるように、
プレイヤーのアプリケーションの拡張を行う予定です。また、フィードバックがありましたら、
&lt;a href="https://github.com/liveinstantly/simple-test-streaming-player/issues" target="_blank">GitHub Issues&lt;/a>
までご連絡ください。&lt;/p></description></item></channel><template>posts/list.rss.xml</template></rss>