Azure Media Servicesについて調べてみた

nazology.net

それが、文章のジョークを理解するAIです。

これを実現させたのが、Pathways Language Model (以下、PaLM)と呼ばれる、5400億パラメータからなる新たな言語モデルです。

”ジョークを理解するAI”をGoogleが開発! 5400億パラメータの言語モデル「PaLM」 - ナゾロジー

⇧ AIコメディアンが誕生するんですかね?

Azure Media Servicesとは?

Microsoftさんのドキュメントによりますと、

docs.microsoft.com

Azure Media Services is a cloud-based platform that enables you to build solutions that achieve broadcast-quality video streaming, enhance accessibility and distribution, analyze content, and much more. Whether you're an app developer, a call center, a government agency, or an entertainment company, Media Services helps you create apps that deliver media experiences of outstanding quality to large audiences on today's most popular mobile devices and browsers.

https://docs.microsoft.com/en-us/azure/media-services/latest/media-services-overview

⇧ と説明があり、一般的には「video streaming」の用途が多いのかなと。

umdb.um.u-tokyo.ac.jp

ビデオストリーミングは、ネットワーク経由でディジタル映像を視聴する技術である。

http://umdb.um.u-tokyo.ac.jp/DPastExh/Publish_db/2000dm2k/japanese/01/01-13.html

⇧ とあるように、インターネットに接続されてることが前提ではありますと。

Azure Media Servicesでは、2種類の配信方法が存在する

Microsoftさんのドキュメントによりますと、

docs.microsoft.com

⇧「Media Services v3 terminology」の説明によると、

  • Live Event
  • Streaming Endpoint/Packaging/Origin

の2つの配信方法が用意されてるらしく、「Microsoft Azure Media Services common scenarios」のドキュメントによると、

docs.microsoft.com

ユースケースの構成図みたいなものが掲載されており、

⇧1つ目のケース以外は、すべて「Live Event」のケースに該当しそうです。

Microsoftの中の方がまとめてくださってる資料を確認すると、

⇧「Live」「VoD(Video on Demand)」の2種類に分けてることから、

  • Live Event
    →Live
  • Streaming Endpoint/Packaging/Origin
    →VoD(Video on Demand)

ってことになるのかしら。

Azure Media Servicesの利用にAzure Storageのアカウントが必須な件

まぁ、何て言うか、Microsoftさん相変わらずドキュメントにまとまりがない感じなのですが、

docs.microsoft.com

⇧「Prerequisites」の記載で、『 An Azure Media Services account. For more information, see Create Account. 』とあるので、確認すると、

docs.microsoft.com

  1. In Storage Account, select a storage account to provide blob storage of the media content from your Media Services account. You can select an existing storage account in the same geographic region as your Media Services account, or you can create a storage account. A new storage account is created in the same region. The rules for storage account names are the same as for Media Services accounts.

https://docs.microsoft.com/en-us/azure/media-services/previous/media-services-portal-create-account

⇧「Azure Media Servicesのアカウント」とは別に「Azure Storageのアカウント」が必要とあるというね...後出しじゃんけんみたいな記載どうにかならんかね...

Microsoftの中の方の資料によると、

⇧ Azure Blob Storageに配置されたデータからストリーミング配信してる模様。

Microsoft Azure Media Services common scenarios」のユースケースだと、「Channel」を利用したケースだと、Azure Blob Storage へはArchiveを保存してるだけで、「Channel」から直に「Streaming Endpoint」にストリーミングが送られてるように見えるので、謎が残りますな...

encode、decodeに対応していることが、video streamingが再生される条件

そもそもとして、「video streaming」における「encode」「decode」ってのがいまいちよく分かってないので、調べてみました。

vsq.co.jp

エンコードとはデータを「符号化する」という意味を持ちます。変換のことですね。

データ容量を少なくすることを目的にエンコードをしていることも多いので「圧縮」とも呼ばれます。

今更聞けない!?映像ファイルとエンコード | SPECIAL | VSQ

逆にエンコード(符号化)されたデータを元のデータに戻すことをデコード(復号化)といいます。

今更聞けない!?映像ファイルとエンコード | SPECIAL | VSQ

エンコード・デコード」の両方を行えるプログラムを、encode(エンコード)のcodeとdecode(デコード)のdecを取って、codec(コーデック)と呼びます。

今更聞けない!?映像ファイルとエンコード | SPECIAL | VSQ

※再生機器はこの仕組みに対応していないと映像を読み取ったり再生したりすることができません。
なので再生用の機器やアプリの説明部分には、必ず対応しているファイル形式(またはコーデック)が明記されています。

今更聞けない!?映像ファイルとエンコード | SPECIAL | VSQ

⇧ 上記サイト様によりますと、「encode」する際は、「decode」に対応した形式で行っている必要があるようです。

なので、Azure Media Servicesに話を戻すと、

docs.microsoft.com

The term encoding in Media Services applies to the process of converting files containing digital video and/or audio from one standard format to another, with the purpose of (a) reducing the size of the files, and/or (b) producing a format that's compatible with a broad range of devices and apps. This process is also referred to as video compression, or transcoding. See the Data compression and the What Is Encoding and Transcoding? for further discussion of the concepts.

https://docs.microsoft.com/en-us/azure/media-services/latest/encode-concept

⇧ とあるように、「decode」で再生できるようにするのは、video streamingを視聴する側のデバイスで対応してくださいってことだとは思う、たぶん。

Azure Media ServicesのSDK(Software Development Kit)にはファイルが「codec」に対応してるか判定するAPIがない?

まぁ、そのために、

docs.microsoft.com

⇧ Azure Media Servicesとして、対応するcodecを並べてくれてるわけですが、肝心のプログラミングで対象のファイルが「codec」に対応しているのかを判定する術が用意されてなさそうに見えるという...

Microsoftさんの公式のサンプルを見る限りでは、

github.com

⇧ 実際にencodeしてみた結果で、エラーになったかどうかで判定せざるを得ない模様、このあたりは、JSONがパースエラーになるかどうかでフォーマットの判定をする以外に方法が無いのに似ているような...

と思ったんですが、JSONについては、

qiita.com

⇧instanceofで判定できる模様。

Azure Media ServicesのJavaSDK(Software Development Kit)のAPIのドキュメントを確認したところ、

docs.microsoft.com

docs.microsoft.com

docs.microsoft.com

⇧「Codec」クラスなるものは存在するものの、ビデオファイルから情報を取得できそうな手法が見当たらない...

そして悲報...

blog.krammesnet.com

I wanted to get information about the input video file BEFORE it is transcoded….

http://blog.krammesnet.com/2017/10/24/using-azure-media-services-to-get-metadata-from-a-media-file/

Sure, there are packages that can do this (MediaInfo although you can’t get audio channel info, FFProbe, TaglibSharp, etc.), but most if not all require the file to be written to disk.  That is a problem if you are looking at a byte array from blob storage, or want to get that information from a stream uploaded from a web client without writing it to disk.

http://blog.krammesnet.com/2017/10/24/using-azure-media-services-to-get-metadata-from-a-media-file/

⇧ 上記サイト様は、C#の例ですが、アップロードされた段階でのビデオファイルから「codec」に対応してるかなどのmetadataを取得する術が無いらしい...

嘘でしょ、Microsoftさん...貴方たちが対応して欲しい「codec」の一覧を定義しているのに、それを検証する術を用意してないってのは何故に?

「Assets」なるものを作成する前段階で検証できるようにする方が良いと思うんだけどな...

毎度モヤモヤ感が半端ない...

今回はこのへんで。