Azure Media Services の Azure Portal を使ったエンコード・配信のチュートリアル

# 本記事について

[Azure Media Services の公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/media-services/latest/)は、動画のエンコードや配信について、[.NETのチュートリアル](https://docs.microsoft.com/ja-jp/azure/media-services/latest/stream-files-tutorial-with-api)はサンプルコードが用意され内容が豊富ですが、Azure Portal を使ったものは内容が限られているようです（2021年10月時点）。ですので、本記事では Azure Portal を使って、動画のアップロードやエンコードの設定、ストリーミングの実施をしていきます。

# Azure Media Services アカウントの作成

メディアサービスアカウントを Azure Portal で作成します。上の検索窓で Media Service と検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/e367ffd7-b09c-7e13-9d14-aeae23685f95.png)

必要な項目を入力していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/7d5df674-7ea0-a517-1b4b-6b722af3ece6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/f661d5ff-2a4b-6965-61c1-38ecb9b160f9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/69943af2-de9c-6ac5-b8f6-7229653eb4b3.png)

# 動画ファイルの用意

.NET のチュートリアルと同じく、こちらのものを利用します。ローカルにダウンロードしておきます。

```bash
wget https://nimbuscdn-nimbuspm.streaming.mediaservices.windows.net/2b533311-b215-4409-80af-529c3e853622/Ignite-short.mp4
```

# 動画のアップロード

資産 > アップロードと進み、先ほどダウンロードしたmp4ファイルをアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/1eddfb22-a1e4-a370-27cc-6f9bd5818b3a.png)

アップロードするとファイルは新しいアセットとして保存され、実体は Azure Blob ストレージに置かれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/392241c7-48e7-6877-5612-c0fae6832914.png)

ストレージリンクをクリックすると、下記のようなページに飛ばされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/add5b0e1-da9c-578d-ea37-6f4ac24e89ca.png)

# 変換の作成

次にエンコーディングのレシピの役割を果たす、変換オブジェクトを作成します。変換とジョブから変換の追加をクリックします。なお、Media Services v3 では、Standard Encoder を使用してファイルをエンコードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/38b2f2c5-91e2-71af-8658-8385e7d05b5d.png)

ここでは、変換の種類として「エンコード」、組み込みのプリセット名として、「H264MultipleBitrateSD」 を選択します。業界のベストプラクティスに基づいて推奨される組み込みのプリセットのいずれかを使用することにより、すぐにエンコードを実施できます。（カスタムのプリセットについては、[こちら](https://docs.microsoft.com/ja-jp/azure/media-services/latest/transform-custom-presets-how-to)にドキュメントがあります。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/149148f8-57f5-05e4-68b2-206ba669c398.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/2f55ccb5-e945-f4d6-76ef-8a85e7a8a9f1.png)

## H264MultipleBitrateSD

[GOP がアラインメントされた、ビットレートが 1,600 kbps から 400 kbps、オーディオが AAC ステレオである 5 つの MP4 ファイルを生成します。 解像度の上限は 480p で下限は 360p です。](https://docs.microsoft.com/ja-jp/azure/media-services/latest/encode-concept#builtinstandardencoderpreset)


# ジョブの作成

次に、実際にエンコーディングを行うジョブを作成します。入力にはさきほどアップロードしたmp4ファイル、変換には今作成した変換オブジェクトを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/10c975ad-0959-a7d2-dce5-dabc59646e8d.png)

ジョブを作成すると処理が始まります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/8a98cd81-62ab-67d5-4c61-6c71d2a9322b.png)

ジョブが完了すると、資産ページに _Output_ と付いた新しいアセットが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/c9ba4c4b-b73e-c32f-25a8-3e63cc3faab1.png)

そのアセットを開き、ストレージのリンクをクリックしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/b52ae8a1-4a6d-0911-10a6-8cc27a1deed2.png)

すると、５つのビットレートでの配信用のmp4ファイル、パフォーマンス向上のための[mpiファイル](https://docs.microsoft.com/ja-jp/azure/media-services/latest/encode-concept#transforms-and-jobs), 配信のマニフェストファイルとなる ismファイル、メタデータを持つJSONファイルなどが作成されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/b4fe085c-8db9-7431-e4a4-1a14b64abf58.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/cb50d36f-526d-169c-d505-8efc6e93acf3.png)

# ストリーミングエンドポイントの起動

今回の配信を行うエンドポイントとなる、ストリーミングエンドポイントを起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/af078d4f-6c7c-278b-82d9-292c603d9a5e.png)

今回はCDNを無効化して開始します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/df118a9e-9284-d9a1-b57e-c6870ad939b0.png)

#ストリーミングロケーターの作成

資産ページに戻り、 _Output_ と付いたアセットをクリックします。このアセットの配信用の URL を持つ、ストリーミングロケーターを作成していきます。＋新しいストリーミングロケーターをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/1e6236d2-e2af-1ea5-41ab-c1354c8475e2.png)

ストリーミングプロトコルと暗号化オプションを定義する[ストリーミングポリシー](https://docs.microsoft.com/ja-jp/azure/media-services/latest/stream-streaming-policy-concept)については、今回は「Predefined_Clear_StreamingOnly」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/3c032dd8-d4f4-2510-97f0-baac8bc51930.png)

作成が終わると、ロケーターのオブジェクトが Portal に表示されるので、「URLの表示」からストリーミング URL を表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/7f054cdd-a973-8dc0-3b91-bbc69fc28b46.png)

# Azure Media Player での動画再生

[Azure Media Player](https://docs.microsoft.com/ja-jp/azure/media-services/azure-media-player/azure-media-player-overview) は、さまざまなブラウザーやデバイス上で Microsoft Azure Media Services からメディアコンテンツを再生する Web ビデオプレーヤーです。[こちらのデモページ](https://ampdemo.azureedge.net/azuremediaplayer.html)から、試していきます。（こちらのページはあくまで検証用で、本番利用はしないでください。）

Setup の URL 欄に、さきほどのストリーミング URL を貼り付けます。どれを貼り付けてもOKですが、今回はMPEG-DASHのURLを使ってみます。そして、Update Player を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/721813cd-9d6a-0632-6b87-d34832ed6057.png)

すると、さきほどアップロードした動画が配信されてきていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/dc29e435-a104-36f9-7543-fd0671611440.png)

Diagnostics を押すと、配信に関する各種分析情報を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/895d23e5-c469-eb59-9e34-9f1a81685326.png)

# リソースの削除

不要になったリソースは削除してください。

# 最後に

本記事では Azure Media Services による動画のアップロードやエンコードの設定、ストリーミングの実行を主に Azure Portal を使って見ていきました。Azure Media Services をとりあえず試してみたいというときに、お役に立てば幸いです。

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。