2022年4月、またしても興味深い成果がGoogleから発表されました。
⇧ AIコメディアンが誕生するんですかね?
Azure Media Servicesとは?
Microsoftさんのドキュメントによりますと、
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」の用途が多いのかなと。
ビデオストリーミングは、ネットワーク経由でディジタル映像を視聴する技術である。
http://umdb.um.u-tokyo.ac.jp/DPastExh/Publish_db/2000dm2k/japanese/01/01-13.html
⇧ とあるように、インターネットに接続されてることが前提ではありますと。
Azure Media Servicesでは、2種類の配信方法が存在する
Microsoftさんのドキュメントによりますと、
⇧「Media Services v3 terminology」の説明によると、
- Live Event
- Streaming Endpoint/Packaging/Origin
の2つの配信方法が用意されてるらしく、「Microsoft Azure Media Services common scenarios」のドキュメントによると、
⇧ ユースケースの構成図みたいなものが掲載されており、
■Protect content in storage and deliver streaming media in the clear (non-encrypted)
■Protect content in storage, deliver dynamically encrypted streaming media
■Working with channels that receive multi-bitrate live stream from on-premises encoders (pass-through)
■Working with channels that are enabled to perform live encoding with Azure Media Services
⇧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さん相変わらずドキュメントにまとまりがない感じなのですが、
⇧「Prerequisites」の記載で、『 An Azure Media Services account. For more information, see Create Account. 』とあるので、確認すると、
-
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」ってのがいまいちよく分かってないので、調べてみました。
逆にエンコード(符号化)されたデータを元のデータに戻すことをデコード(復号化)といいます。
※再生機器はこの仕組みに対応していないと映像を読み取ったり再生したりすることができません。
なので再生用の機器やアプリの説明部分には、必ず対応しているファイル形式(またはコーデック)が明記されています。
⇧ 上記サイト様によりますと、「encode」する際は、「decode」に対応した形式で行っている必要があるようです。
なので、Azure Media Servicesに話を戻すと、
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
Videos are typically delivered to devices and apps by progressive download or through adaptive bitrate streaming .
https://docs.microsoft.com/en-us/azure/media-services/latest/encode-concept
⇧ とあるように、「decode」で再生できるようにするのは、video streamingを視聴する側のデバイスで対応してくださいってことだとは思う、たぶん。
Azure Media ServicesのSDK(Software Development Kit)にはファイルが「codec」に対応してるか判定するAPIがない?
まぁ、そのために、
⇧ Azure Media Servicesとして、対応するcodecを並べてくれてるわけですが、肝心のプログラミングで対象のファイルが「codec」に対応しているのかを判定する術が用意されてなさそうに見えるという...
Microsoftさんの公式のサンプルを見る限りでは、
⇧ 実際にencodeしてみた結果で、エラーになったかどうかで判定せざるを得ない模様、このあたりは、JSONがパースエラーになるかどうかでフォーマットの判定をする以外に方法が無いのに似ているような...
と思ったんですが、JSONについては、
⇧instanceofで判定できる模様。
Azure Media ServicesのJavaのSDK(Software Development Kit)のAPIのドキュメントを確認したところ、
⇧「Codec」クラスなるものは存在するものの、ビデオファイルから情報を取得できそうな手法が見当たらない...
そして悲報...
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」なるものを作成する前段階で検証できるようにする方が良いと思うんだけどな...
毎度モヤモヤ感が半端ない...
今回はこのへんで。