😅

AWS Elemental Media Servicesのハンズオンを試したら基礎知識が1ミリもなくて調べ直した経験より

2021/09/11に公開

AWS Elemental Media Services Handson

畑田です。
こちらでAWSのElemental Media Servicesのハンズオンで遊んでみたのですが、インターネットや音声映像技術に関する基礎知識がなかったので調べてメモしていきます。
どんどんいきます。

ストリーミング

ストリーミングについては<a href="./streaming.md">こちら</a>

end point

まず、そもそもend pointってなんだってなりました。
今まで適当に使ってきたし、感覚だけで十分意味の伝わる用語だったのでおざなりにしてきましたが、調べて言語化しておきます。
ネットワークの末端に位置するクライアントのデバイスやサーバを指す言葉であるが、ソフトウェアにおいては外部に公開している部分の識別名やURL、URIをいうようです。

ARN

これは、AWSの用語でした。
略語が多すぎてかないません。
ARNはAmazon Resource Nameの略語で、AWSのリソースを一意に識別するための文字列です。
データベースのレプリカを作る場合など一部のサービスでこれを必要とするようです。

arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id

以上のような形式で表されます。
以下がARNの例ですが、不要な部分は省略可能なようです。

arn:aws:iam::123456789012:user/Development/product_1234/*
arn:aws:s3:::my_corporate_bucket/Development/*

CORS

これはHTTPの話です。
CORSとはcross-origin resource sharingのことであり、あるオリジンで動作するウェブアプリケーションに、異なるオリジンの特定のリソースへのアクセス権限を与えるようブラウザに指示する仕組みのことです。
今回のハンズオンではElemental MediaStoreでcontainerを作成するときのCORS policyの設定で現れてハテナだったのですが、作成したcontainerの内容を、異なるドメイン上のウェブアプリケーションでも使用する際の設定を記述するようです。
ちなみにオリジンとは、スキーム(プロトコル)、ホスト、ポートの組み合わせのことであり、どれか一つでも違えば、異なるオリジンであるとされます。

SSL

これはセキュリティの話です。
SSLはsecure sockets layerの略語で、ウェブサーバとブラウザの間の通信において、情報を暗号化することで第三者からの盗聴や、改竄を防ぐための仕組みです。
SSLにはざっくりと2つの役割があります。

  • 共通鍵暗号方式と公開鍵暗号方式の両方を用いて、通信を暗号する役割。
  • ウェブサイト所有者の情報、送信情報の暗号化に必要な鍵や証明書発行者の署名データを持つSSL証明書を利用し、運営元を保証する役割。

SSLを用いて暗号化しているHTTPをHTTPSとよび、この方式を用いているウェブサイトのURLはhttps://から始まり、ブラウザではURLの先頭に南京錠のマークがつくようになっています。

RTMP

RTMP (Real Time Messaging Protocol)は、Adobeが開発している、Adobe Flash Playerとserverの間で、音声、動画、データをやりとりするストリーミングのプロトコルです。
RTMPはHLSやDASHなどのストリーミングプロトコルとは違い、HTTPを用いないため、専用のサーバを用意しなければなりません。
HLSやDASHに対するRTMPの優位性は、いちいちHTTP通信で更新をかけないためレイテンシが小さいという点にあります。
ただし、Adobeは2020年にFlashのサポートを終了するため、RTMPのサポートも終了します。
なのでもう書きません。

GOP

これはElemental Media Packagesの設定において出てきました。
言われるがままに値を設定しましたが、もう少し何なのか調べてみました。
まず、GOPはgroup of picturesの略で、MPEG技術においてI pictureを一枚上含むpictureの集合のことです。
まず、MPEGの圧縮方式について説明します。
厳密には以下はMPEG-2の圧縮方式です。
映像というのは画像が素早く切り替えられているものに過ぎず、動画を構成する各画像のことをフレームと呼びます。
一秒あたりのフレーム数のことをframe rateと呼び、テレビは30 [fps]、映画は24 [fps]、ゲームで60 [fps]です。
MPEGでは各フレームがI picture (intra picture)、P picture (predictive picture)、B picture (bidirectionally predictive picture)に分けられてエンコード(離散コサイン変換、量子化、符号化)されます。
I pictureはそのフレームの持つ情報のみが全てエンコードされ、デコードするときもそのフレームの情報だけで復号されます。
P pictureは前方予測によって、つまり、直前のフレームのその速度ベクトルから差分を予測してその差分のみがエンコードされており、デコードの際も予測に用いたフレームがなければ復号することができません。
B pictureは双方向予測によって、つまり、前後のフレームの平均をとるように予測してエンコードするフレームであり、デコードの際にも予測に用いた前後両方のフレームがないと復号されません。
一般的なDVDでは、I B B P B B P B B P B B P B Bという並びを繰り返すように各pictureが割り振られており、この繰り返し単位をGOPを呼びます。
この場合、15フレームで一つのGOPを構成するため、15GOPなどと言います。
各P pictureは直前のI pictureまたはP pictureを前方予測に用いており、各B pictureは前後のフレームを双方向予測に用いています。
このとき、B pictureは自分より時間的に後のフレームが読み込まれてからしかデコードされないため、必ず遅延が生じることになります。
I P P P P P P P P P P P P P Pなどと配置することで遅延を減らすことができますが、情報量が大きくなってしまいます。
GOPの説明というより、MPEG-2の説明になってしまいました。
MPEG-4の圧縮方式はより高度なようなので誰か調べて教えてください。

Discussion