Azure Media Services の移行・お引越し・Migration: MediaKind 編 (1) VoD の基本動作を理解する

# 背景
2013年くらいに登場。その後日本国内でも多くの方にご利用いただいた Azure Media Services が、2024年6月30日をもってサービス停止をすることになりました。本当に残念です。

Azure Media Services の提供終了:
https://learn.microsoft.com/ja-jp/azure/media-services/latest/azure-media-services-retirement

ここではよくあるであろうお引越しを試してみます。推奨される引っ越し先のアプリケーションが複数掲載されています。

この Blog Post では、MediaKind さんの IO に引っ越しをしてみます。

https://io.mediakind.com/

# シナリオ
VoD (=Video On Demand) のシンプルなものを扱います。 

- vCMS (Video CMS) は別です。
- Azure Media Services のファイルがそのまま使えるのか?
- MediaKind IO の Player で再生ができるか?
- DRM は使用しない

# 手順

移行の概要はこちらのドキュメントに従います。

https://docs.io.mediakind.com/docs/migrating-from-ams

以下の3つが主たる対象ですね
- ファイル (Asset)
- オリジン (Streaming Endpoint) + CDN


## 1. MediaKind IO の作成

こちらを適時ご参考ください。

https://docs.io.mediakind.com/docs/sign-up

Azure Marketplace から入手します。

"Step 1. Sign up through the Azure Marketplace"ですね。
https://docs.io.mediakind.com/docs/sign-up

Azure Marketplace では、以下の様に **MK/IO – Video Streaming at Scale** という名称で出ています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/da811c1f-aac1-1110-eee8-816a2c2124dd.png)

https://azuremarketplace.microsoft.com/en-us/marketplace/apps/mksystemsusainc.mediakind?tab=Overview

料金も出ていますね。ほぼ Azure Media Services と同一です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/3d08d52b-1596-afb2-6f60-825a5975b6c0.png)

画面の [Get it Now] を押すと、連絡先の入力画面が出てきます。こちらに Azure の Subscription 契約時と同じ情報あるいは、MediaKind 関連での連絡先について入力をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/03074b88-6887-a753-aed4-87203b9abc64.png)

その後 Azure の Portal に遷移します。[購読する]を押して、手続きを進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/602a4c34-b49a-b825-51a7-abd9eb0a531b.png)

Azure の他のリソース作成時と同じ画面が出てきます。Japan East も Japan West も選択出来ますね😊

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/c9cfa359-46e9-b3d4-15a0-2cb694e6a9a1.png)

そのまま作成を進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/008f2c9b-b1b4-dbb6-cc5b-0f7e8345dc84.png)

作成が終わったら、SaaS としてのアカウント情報が入力できるようになります。[アカウントを今すぐ構成]を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/ac1c12b7-a93e-8e47-9355-4e2acd0413f5.png)

MediaKind さんのWebサイトに遷移しました。

サインインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/774bbdc4-16ae-94df-605f-3f3edc3175e9.png)

MediaKind のサブスクリプションを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/3b9e799c-53a8-1390-89d0-fac5778fbd91.png)

MediaKind さんのポータルに入れました!!!

注意書きにある通り、ログイン後に MediaKind さんの方でActivation の作業が必要なようです。人が作業すると思いますので、数営業日待ちましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/2ba3bb08-ec16-0dbf-4cc1-f48303397d07.png)



## 2. ファイルの移行

ここからは、以下のドキュメントに沿って、Migration を行います。
具体的には、Azure Storage Account のアタッチです。

https://docs.io.mediakind.com/docs/migrate-your-azure-media-services-data

### 2.1. ストレージアカウントの紐づけ

既存の Storage Account の紐づけが出来ます。

https://docs.io.mediakind.com/docs/connecting-my-current-storage-accounts

ダッシュボードの画面中央に [Add storage account]があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/eaf8d73c-5814-5263-ce34-403f764664af.png)

:::note info
この画面はチェックボックスがついています。これは作業が終わった時点でのスクショだからです。気にしないでください😊
:::

画面右上に、[Add Storage Account] があります。選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/402210b7-acf1-37ab-70d5-e52649a87180.png)

以下の画面が出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/91bd3913-6ad1-aeb9-6146-ad6462b9d3b6.png)

:::note info
SAS Tokenですが。Azure Portal の Azure Storage Account の **[Shared Access Signature]** から作成します。コンテナやファイル単位はよくSAS Tokenを作成されていると思いますので、ご注意ください。私も勘違いしました😅

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/b27bc2b0-6fc8-ede2-590a-c433baaad593.png)
:::

| 項目 | 値の例 | メモ |
| -- | -- | -- |
| Name | dahatakemain | Azure の Storage Account と別で大丈夫です |
| Description | (わかりやすい説明文を) | |
| URL | https://dahatakemediastorage01.blob.core.windows.net/ | Azure Storage Account のURL です |
| SAS token | xxxxx | "?sv=2022-xxxx..." の様な書式です |

Azure Storage Account の紐づけが終わると、以下の様にリストで表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/204a4ef8-2f26-a57a-5fbe-07039db9984a.png)

- ここでは、同じストレージアカウントで、別の名前を付けてみています

### 2.2. Streaming 用のファイルの紐づけ

Azure Media Services で、Dynamic Packaging 用にエンコードされたファイル達の紐づけを行います。

こちらが、Azure Media Service から見えるファイル達です。4つコンテナがありますが、2つはオリジナルmp4ファイル。2つが、エンコードして Dynamic Packaging 対応した配信用のファイルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/b2eef74c-51eb-794c-373a-61c4296d56ec.png)

こちらが、配信用ですね。このコンテナを MediaKind iO から参照できるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/f9de4ebb-289b-ec50-6653-ff1307860fec.png)

MediaKind アプリのダッシュボードに行きます。

画面中央の [Migrate Assets] ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/1c375e21-80d5-e100-26f5-04a2d2e6acd5.png)

画面右上の [Migrate Assets]を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/f20bab23-1809-485c-d047-659cf76a86a4.png)

Asset の登録画面が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/763e0667-7f8e-0667-0ff7-21ddef3b2f09.png)

以下の情報を入力します。

| 項目名 | 値 | メモ |
| -- | -- | -- |
| Name | (MediaKind IO 内でわかりやすい動画コンテンツ名を) | 
| Description | (わかりやすい説明文を) | |
| Storage Container | (fMP4 ファイルが入っているコンテナ名) | Azure Storage Explorer などを使って、コンテナ名を取得してください |
| Storage Account | (紐づけられた MediaKind IO でのストレージアカウント) | |

こちらが入力例です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/48d0b4fd-d162-2a15-574a-e3efd03c7f11.png)

この様な形でMediaKind IO から認識がされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/51b85585-065b-7320-b342-9943af3ad5e8.png)

## 3. Streaming Endpoint の作成

オリジンを作成します。MediaKind IO のオリジンも Azure Media Services と同様の Streaming Endpoints になっています。分かりやすくてありがたいです。

こちらが公式ドキュメントです。

https://docs.io.mediakind.com/docs/set-up-your-streaming-endpoints

ダッシュボード中央の [Create streaming endpoints] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/22e8cc85-3b36-d62d-feb4-0e5ff9d2697b.png)

Streaming Endpoints 画面の右上の [Create Streaming Endpoint] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/f39eeba1-04fb-7816-0486-92bc5372532c.png)

Streaming Endpoint の設定をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/fe06afd2-22a9-87e7-d9fb-9e47252bc75a.png)

| 項目 | 値 | メモ |
| -- | -- | -- |
| Streaming Endpoint name | (MediaKind IOでの識別名ですね) | |
| Description | (わかりやすい説明文を) | |
| Streaming endpoint type | Shared | 動作確認には。本番では **Dedicated** を強く推奨します |
| Streaming units | (数字) | |
| Start streaming endpoint after creation | - | |
| Enable CDN | - | (執筆時点では、まだ押せないです) |
| Tags | | |

[Submit] ボタンを押して、作成をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/7da3a78e-60d3-439b-5315-950a9dfe5d53.png)

こちらのスクショでは2つの Streaming Endpoint が出来ています。[State] に **Creating** と **Running** がある事に注目してください。
実行をしていないのですが作成とともに開始されています。つまり**課金が開始**されると思います。

## 4. Streaming Locator 作成

これでファイルが見えるようになり、オリジンサーバーも立ち上がっているので。次にそれらの紐づけを行います。Azure Media Services と同じオブジェクト名の Locator を作成します。

こちらが公式ドキュメント:
https://docs.io.mediakind.com/docs/set-up-your-streaming-locators


ダッシュボード中央の [Configure Streaming Locator]を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/a6d13ab3-4c34-0cb4-f489-9e1bd7bdcc9d.png)

[Assets] 画面に移動します。配信を開始したいファイルを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/026dbced-2334-983e-f2c3-9767726f1944.png)

[Audience View and Settings]で、[Streaming Locator]を選択。[+Add streaming Locator]を選択して、Streaming Locator の作成を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/d69adb4c-aa57-e934-0ee7-6c9fd25b4d46.png)

Streaming Locator の作成画面です。それぞれのパラメーターが Azure Media Services で設定できたものと同じですねー😎

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/489bfb85-3371-5606-6af5-83e164185166.png)

| 項目 | 値 | メモ |
| -- | -- | -- |
| Name | (Locatorを複数作成する際には、識別できるもので) | |
| Streaming Policy | Predefined_ClearStreamingOnly | デフォルトの暗号化しない配信設定です |
| Content Key Policy | (今は空白) | 暗号化、DRM 設定時のものです |
| Expiration time | (1年後など) | 公開の期限があります |
| Filters | (今は空白) | Dynamic Filtering の機能がありそうです |
| Streaming locator ID | (空白) | Live Streaming でHA構成などを行う際には、2つのLocator で同じIDを使っていた方が実装はFail Over の実装は容易です。 |

設定できたら [Apply] ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/09b78a03-1959-5771-45ba-51b9b5b48f27.png)

組み込みの MediaKind さんの Player で確認が出来ますね!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108143/75a2ad1e-325d-a898-8750-933b1b5513ee.png)

一応、公式ドキュメント:
https://docs.io.mediakind.com/docs/playback-your-migrated-assets

:::note warning
執筆時点では、まだ、Azure Media Player 互換の Player についてはドキュメントが提供されていません。
https://docs.io.mediakind.com/docs/player-sdk
:::

# まとめ

まだプロダクションで使うには MediaKind IO の機能やドキュメントの整備が不足しています。ただ、今後拡充されていく予定だそうです。

私の感想ではないですが。Azure Media Service と同じオブジェクトモデルなので、APIやPlayerの使い方なども、ある程度なれしたしんだものです。既存のファイルをそのまま使えるコトもやっぱり便利ですね。料金体系も一緒ですし。

今後ですが、以下、書いていく予定です😊
- Playerの実装

https://qiita.com/dahatake/items/5a9dfb6f2dbecd624c45

- CDN 設定
- 大量ファイルの移行