追記
2021/02/17 「v2 API に関する機能のギャップ」の記事URLが変更になっていたため、リンク先を変更しました。
はじめに
この記事では、Azureメディアサービスのv2 APIからv3 APIへ移行するときに考えたいろいろを挙げさせていただきます。
メディアサービスには様々な機能が実装されていますが、今回触れるのはあくまで私が利用した範囲のものだけであることご了承ください。
また、Azureメディアサービスのv2からv3への変更の概要については下記の記事を参考してください。
- Media Services v2 対 v3
https://docs.microsoft.com/ja-jp/azure/media-services/latest/media-services-v2-vs-v3 - Media Services v2 から v3 への移行のガイダンス
https://docs.microsoft.com/ja-jp/azure/media-services/latest/migrate-from-v2-to-v3
v3に移行するデメリット
実のところ、v3に移行するデメリットは比較的少ないと思います。最大の難点はAPIの構造が大きく変わり、SDKも大きく変わっているので移行コストがかかることではないでしょうか。
とは言いつつ、個別の機能の中にはv2では出来ていたのに、v3で出来なくなることがあります。先にも上げた記事の中に「v2 API に関する機能のギャップ」 の記載があります。
まず、Premium Encoder(または Media Encoder Premium Workflow)は現時点で、v3 APIではサポートされていません。公式にアナウンスが出ているわけではありませんが、おそらく今後もv3に移行はされないのではないかと思われます。Premium Encoderを利用している場合は
- Azure Media Encoder Standardで代替できるか
- クラウド上での利用が可能なライセンス形態のエンコーダを探し、Azure Batchで実行する
- 他のクラウドサービスのエンコーダが利用できるか
など検討を進めるべきです。
また、Media Encoder Standardでトリミングや無音オーディオトラックの挿入がサポートされていないといったあたりも利用シーンによっては移行に致命的な問題になる可能性がありそうです。
#v3に移行するメリット
SDK 周りのメリット
- .Net Coreに対応している
- v3のSDKはBlobのSDKと依存関係にない
などv3のSDKは色々とメリットがあります。
例えばAzure Functionsの最新版を利用しようと思うと.Net Coreを使わなくてはなりませんが、v2のSDKは.Net Frameworkしか提供されていません。しかも、v2のSDKは WindowsAzure.Storageに依存していますが、その更新は2018年11月に止まっていて、既にdeprecated扱いになっています。
(詳しくは以前書いた記事「AzureのメディアサービスとFunctionsとBatchのバージョン問題」など御覧ください)
一方で、 v3ではAsset Fileという概念がなくなり、AssetとBlobの結合を疎にしたおかげで、v3のSDKはBlob Storage クライアント ライブラリに依存していません。このため、Blobクライアントライブラリはv11/v12のどちらを使っても構わないというメリットがあります。
Dynamic Encryptionがより容易に
v2では基本的に暗号化の設定はAssetに紐づけていましたが、v3ではロケータに紐づける形に変更されました。この結果、同じファイルで異なる暗号化設定のコンテンツ再生URLを生成することができるようになりました。
例えば、新しい配信形式を追加で配信したい場合、v2の場合は同じMP4ファイルを持つAssetを別途作る必要があり、移行期間中、Blobの利用量が2倍になってしまう等の問題がありました。v3では同じAssetを利用したまま、別設定のURLを発行できますので、より移行が簡単になります。
音声の非暗号化に対応
v3のStreamingPolicyの設定では、CommonEncryptionCbcs と CommonEncryptionCenc のどちらにも clearTracksというプロパティが容易されています。ここで指定されたコーデックは、暗号化されない状態で配信されます。
例えば、Widevine L1端末に対してハードウェアセキュリティレベルのライセンスを設定した場合、VideoトラックとAudioトラックが同じKeyIdで暗号化されていると端末側が不具合を起こし、正常に再生できないといった問題が起こりえます。
こういった問題が発生した場合に、clearTrackでAudioトラックを指定してあげれば、再生できるようになります。
(欲を言うと、オーディオトラックを別KeyIdで暗号化できるようにしてほしいのですが・・・)
最後に
私が感じているAzureメディアサービスのv3 APIへ移行するときに考えるべきことについて、つらつらと書いてみました。
個別の設定方法のTipsも色々とあるので、追々書けていけたらなぁと思っております。