このサイトは、ほんの入り口です

ここにあるのは、だれかが実際に調べ、考え、作ってきたことを集めたメモです。気になったら、ページの下の「参考にした情報源」から、もとの本や記事、それを生み出した人たちに、直接ふれてみてください。このメモには書ききれないおもしろさが、そこにあります。

ネットの ドラマは、とおくの サーバーから くるの?

夜に見るドラマの動画は、どこから届き、画質はだれが選んでいるのか

動画配信は、どこに置かれたコピーから届き、画質はどんな基準で選ばれるのか:CDN・バッファ量・作品ごとの画質の段

分野:技術

ネットで ドラマを 見ているとき、画面の むこうに ある 大きな きかいは、じつは すぐ 近くに あるかも しれません。ネットフリックスでは、人気の 作品の コピーを、見る人の つうしんがいしゃの 中や その 近くに、前もって おいて おく ことが あると せつめいされて います。

どうして そんな ことを するのでしょう。そして、回線が おそく なったとき、がしつは だれが どうやって かえて いるのでしょう。この メモを よむと、コピーが おかれる わけと、がしつを えらぶ ときの 考えかたが わかります。

ネットフリックスは、人気の作品のコピーを、見る人が使う通信会社(ISP)の設備の中に置いている、と公式に説明しています。動画は「遠くの会社から飛んでくる」とは限らず、利用者の少ない時間帯のうちに近くへ置かれたコピーから届くことがあるのです。ではなぜ、そんな置き方をするのでしょうか。そして回線が急に遅くなったとき、画質を下げるかどうかはどう決めているのでしょうか。

この記事では、コピーが置かれる場所とその理由、画質を選ぶときに「回線の速さの予想」より「手元にためた量」を見る方法、作品によって画質の段を変える考え方が分かります。同じ5800kbpsでも、映像によっては足りず、別の映像では余ることがあります。

Netflixは、条件を満たす通信会社(ISP)に配信用サーバーを無料で提供し、人気作品のコピーを利用者の近くに前もって置いている、と公式サイトで説明している。つまり動画は、遠い本社のサーバーからその都度届くとは限らない。ではなぜ近くに置くのか。また、回線が不安定なとき、プレーヤーは何を根拠に画質を上げ下げするのか。

この記事では、CDNの基本、夜間の事前コピー、HTTP上での回線容量の見積もりの難しさ、バッファ量で画質を決める方式(2014年の研究)、作品ごとに画質の段を変える考え方が分かる。出典は英語の公式サイトと論文が中心で、数字の条件は本文で示す。

読み方を切り替えられます。画面の上にある「よみかた」のボタンで、小学校低学年むけ・小学校高学年むけ・中学生むけの3つの書き方に切り替わります。むずかしいと思ったら、いつでもやさしい方に戻ってください。選んだ読み方はブラウザが覚えているので、次に別の記事を開いたときも同じ読み方で始まります。

1. ドラマは、とおくの サーバーから くるの?

1. 見る人の町の通信会社の中に、コピーが置かれている

1. 配信用サーバーを通信会社の中に置く:CDNの考え方

よるに ドラマを 見ようと、おおぜいの 人が 同じ ときに ボタンを おします。もし ぜんぶの 人が、とおくの 1つの きかいから 動画を もらうと したら、どうなるでしょう。道が こんで、とまって しまいそうです。

そこで、動画の コピーを、いろいろな ばしょに ならべて おく ほうほうが あります。これを CDN(しーでぃーえぬ)と よびます。コピーを もった きかいが 世界の あちこちに あって、見る人に 近い きかいが へんじを します[1]。

ネットフリックスは、さらに 一歩 すすめて います。見る人が つかう つうしんがいしゃに、自分たちの きかいを むりょうで おくって、その 会社の 中に すえつけて もらって います。つうしんがいしゃは、おく ばしょと 電気と 回線を 出します[3]。

この ほうほうで つながる つうしんがいしゃは、1000 社を こえると、ネットフリックスは 書いて います[3]。

たとえば、ピザを 遠くの 本店から はこぶのでは なく、町ごとに ある 小さな 店で 先に つくり おきを して おく ような ものです。ただし 本当は、ピザではなく 動画の コピーで、いくつ あるかも 外からは わかりません。

夜のドラマを何百万人もの人が同時に見るとき、動画を1か所のサーバーだけで配ると、道も機械もすぐ混みます。そこで使われる考え方がCDN(コンテンツ・デリバリー・ネットワーク)です。MDNの用語集では、世界のあちこちに散らばったサーバーの集まりで、データの複製を持ち、利用者にいちばん近いサーバーが要求に答える、と説明されています。距離が遠いほど、返事が届くまでの遅れも大きくなります[1]。

ネットフリックスのOpen Connectは、この考えをさらに利用者の近くへ寄せています。条件を満たす通信会社には、専用の配信サーバー(OCA)を無料で提供します。通信会社の側は、置く場所、電力、接続を用意します[3]。つまりコピーは、見る人の通信会社の設備の中や、その通信会社に直接つながる拠点にあることになります。公式サイトは、提携するISPが1,000社を超えるとしています[3]。

ただしこれは、ネットフリックスが公式に説明している仕組みです。ほかの配信サービスが同じ置き方をしているとは、この記事の資料からは言えません。

それにしても、通信会社の中に置くコピーは、いつ、どうやって用意されるのでしょうか。

CDNは、地理的に分散したサーバー群にデータの複製を持たせ、利用者に近いサーバーが要求に応える仕組みである。MDNは、距離が遠いほど遅延が大きくなる点を前提に説明している[1]。同時に大勢が同じ動画を求める配信では、1か所に集めると経路もサーバーも混雑するため、複製を分散させる利点が大きい。

NetflixのOpen Connectは、配信用サーバーを通信会社の設備内に置く仕組みである。公式サイトによれば、条件を満たすISPに配信サーバー(OCA)を無料で提供し、ISPは設置場所・電力・接続を負担する[3]。利用者のISP網内、またはISPに直接接続した拠点にあるサーバーから届くため、動画が長い経路を通らずに済む、というのがその狙いと読める。提携ISPは公式に「1,000社を超える」とされる[3]。台数や世界の通信量に占める割合は、第三者のブログに数字があるだけなので使わない。

なお、これは一社の公式説明であり、他社の配信が同じ構造だとは、ここでは言えない。次の問いは、複製がいつ置かれるのかである。

2. コピーは、いつ だれが おくの?

2. 人の少ない夜のうちに、人気の作品を先に置いておく

2. オフピークの事前コピーと、置いていない作品が求められたとき

コピーを おく 時間は、見る人が すくない 夜中ごろだと せつめいされて います。みんなが 見ている ときに コピーを はこぶと、道が よけいに こむからです[4]。

どの 作品を おくかは、「どれが 人気に なりそうか」を はかる しくみで きめて います。「ただしい ファイルを、ただしい きかいに、ただしい ときに」おく ことが ねらいです[4]。

まだ きかいに 入っていない 作品を 見たい ときは、いちばん 近い ネットフリックスの きょてんに おねがいが 行きます[5]。

はじめて きかいを おく ときは、せっていと コピーに 1〜2週間 かかる ことが ある、と 書かれて います[3]。

近くに コピーが おかれた 作品なら、前もって はこんで おく ことで、夜の つうしんの こんざつを へらせます。

コピーを置く作業は、見る人が多い夜ではなく、少ない時間帯(オフピーク)に行われます。ほかの通信とぶつからないためです。ネットフリックスは、人気度を予測するモデルを使い、「適切なファイルを、適切なサーバーに、適切なときに」置いていると説明しています[4]。

では、近くのサーバーに置いていない作品が選ばれたら、どうなるのでしょうか。APNICのブログによると、その要求は最も近いネットフリックスの拠点へ向けられ、通信会社同士の接続か、別の通信業者を経由して届きます。ネットフリックスは、通信会社の中に置いたサーバーを優先する、とも書かれています[5]。つまり、近くにコピーがないときは、別の経路で届くことがあります。

サーバーを最初に置くときは、初期設定と事前コピーに通常1〜2週間かかる、と公式サイトにあります。カタログの大きさで変わります[3]。毎晩の更新と、初めて置くときの大きな準備は別の作業です。

こうして動画は近くに用意されました。ところが、近くから届けても、家の回線が急に細くなることはあります。そのとき画質はどう決まるのでしょうか。

コピーはいつ置かれるのか。Netflixは、見る人が少ない時間帯(オフピーク)に、人気度のモデルに基づいてサーバーを埋めると説明している。目的は、利用者の視聴と競合しない時間に、適切なファイルを適切なサーバーに適切なときに置くことである[4]。

当然、すべての作品が近くのOCAにあるわけではない。APNICのブログによれば、通信会社内のOCAにない作品を要求されると、要求は最も近いNetflixの拠点へ、相互接続(ピアリング)があればそれを、なければ別の通信事業者(トランジット)を経由して向けられる。OCAは通信会社内のものが優先される[5]。二次資料の記述であり、通常は近くのコピーで応じ、ないときだけ経路が長くなる、という構造だと読める。

初回の準備にも時間がかかる。公式サイトでは、納入前の初期設定と事前コピー(pre-fill)に通常1〜2週間かかるとされ、これはカタログの規模による[3]。夜間の更新(オフピーク)とは別の工程であり、「毎晩これだけ運ぶ」という頻度の数字は、資料には出ていない。

だが、動画が近くに用意されても、最後の区間、つまり家の回線やWi-Fiは別の話である。ここで揺れる速度に、プレーヤーはどう対応するのか。

3. かいせんの はやさを あてるのは、むずかしい?

3. 回線の速さを予想して画質を決めると、うまくいかないことがある

3. 画質の選び直し:数秒ごとの要求と、HTTP上での帯域推定の難しさ

動画は、1本まるごとでは なく、この 研究の せっていでは 4秒ぐらいの 小さな かたまりに わけて おくられて きます。ネットフリックスと 大学の 研究では、そう せつめい されて います[6]。

しかも 1つの 作品は、いろいろな がしつで 用意されて います。いちばん 軽い ものは やく 235 キロビット/秒、いちばん 重い ものは やく 5 メガビット/秒でした(この 研究の せってい)。計算すると、やく 21 ばい の ちがいです[6]。

プレーヤーは、かたまりを もらう たびに、「つぎは どの がしつに しようか」と えらびなおします[2]。

ここで むずかしいのが、「いま かいせんは どれくらい はやいか」を あてる ことです。研究では、その 見つもりは とても むずかしいと 書かれて います。見つもりが たかすぎて がしつを さげそこね、止まって しまった れいも のって います[6]。

この せっていを 1時間の ドラマに あてはめると、4秒 ずつなら 900 回 えらびなおす 計算です。

画面の向こうでは、動画は小さな塊(チャンク)に切って届きます。ネットフリックスと大学の研究者が2014年に発表した論文によると、各作品は約235kb/sから5Mb/sまで、いくつもの画質で用意され、プレーヤーは4秒ぶんの塊ごとに、どの画質を求めるかを選びます(当時の実験の設定で、規格で決まった数字ではありません)[6]。5000÷235は約21なので、いちばん軽い画質といちばん重い画質は、データ量にして約21倍の差があります。

このように、同じ内容の別の画質を並べておき、プレーヤーが回線の状況に合わせて切り替える仕組みは、HLSの規格文書(RFC 8216)にも書かれています[2]。

切り替えの基準として、まず思いつくのは「いまの回線の速さ」でしょう。ところがその論文は、使える回線の容量を見積もるのは難しいと述べています。見積もりが高すぎると画質を下げ損ね、論文の図の例では回線容量が350kb/sに落ちたあと、200秒のあいだ再生が止まった場面が示されています。これは図の一例で、一般的な数字ではありません[6]。

回線の速さが予想しにくいなら、何を見て決めればよいのでしょうか。

HLSの規格文書(RFC 8216)は、同じ内容の別バージョン(バリアントストリーム)をマスタープレイリストに並べ、クライアントは回線の状況に応じて切り替えるべきだとする[2]。ただしこれは標準化過程の規格ではなく情報提供の文書である。

Huangらの論文(SIGCOMM 2014)では、各作品を複数のビットレート(典型的には約235kb/sのSDから5Mb/sのHD)で符号化し、固定長(実験では4秒)のチャンクごとに要求する設定が使われた。4秒は実験時のNetflixの設定で、規格値ではない[6]。5000÷235≒21なので、最低と最高の画質では、1秒あたりのデータ量が約21倍違う。4秒ごとの選び直しなら、1時間の作品で900回の判断になる。

では、どうやって選ぶのか。直感的なのは回線容量の測定値に合わせることだが、同論文は、HTTP上で正確な帯域推定を行うことは難しいと述べる。見積もりが高すぎると画質を下げられず、論文の図の例では容量が350kb/sに落ちた後に200秒間止まった。ただし、これは図中の一例で、一般的な数値ではない[6]。測定が当てにならないなら、別の手がかりが要る。

4. では、なにを 見て がしつを きめるの?

4. 回線の予想ではなく、手元にためた量を見る

4. バッファ量から画質を選ぶ方式:クッションとリザーバーの考え方

研究者たちが 考えたのは、「いま 手もとに どれだけ ためて あるか」を 見る ほうほうです。ためて ある りょうを バッファと いいます[6]。

バッファが すくないときは、いちばん 軽い がしつを えらびます。たくさん たまって きたら、だんだん きれいな がしつに します。ためた 分が あれば、少し おそく なっても すぐには 止まりません。

水を ためる 水そうで いえば、水が すくないときは 水を ちょっとずつ つかい、いっぱいに なったら ゆったり つかう 感じです。ただし 本当は 水ではなく、これから 見る 動画の 時間です。

ネットフリックスの 人たちが じっけんした けっかでは、それまでの ほうほうに くらべて、人が おおい 時間の じっけんでは、くらべた 方より 止まる 回数が 10〜20% へりました。がしつの へいきんは 同じくらいでした[6]。

2014年の研究が提案したのは、画質を、いま手元にためた動画の量(バッファ)をもとに決める方法です。バッファが少ないときは最低の画質を選び、たまるほど高い画質へ上げ、満ちてくると最高の画質にします[6]。ためた分があれば、回線が少し細くなっても、すぐには止まりません。

この方式には工夫があります。頻繁に画質が行ったり来たりしないよう「クッション」になる余裕を持たせ、バッファが減ってきたら早めに画質を下げる余裕(リザーバー)も持たせます[6]。

ピーク時間帯の実際の利用者での実験では、対照群に比べて、当時のネットフリックスの標準的な方法より、再生が止まる割合(リバッファ率)が10〜20%減り、平均の画質は同程度だった、と報告されています[6]。arXiv版の要旨は「20%」、出版版は「10〜20%」で、ここでは出版版に合わせました。ただし再生を始めた直後はバッファが空なので、回線の見積もりも必要になる、と論文は述べています。

「回線の速さ」より「手元の貯金」を見るという発想は、回線の予想が難しいという事実から生まれました。では画質の段そのものは、どの作品でも同じでよいのでしょうか。

同論文が提案するのは、画質を現在のバッファ量の関数として決める方式である。バッファが少ないとき(リザーバーより下)は最低のビットレート、満ちるほど最高のビットレートに近づける。途中の部分(クッション)は、頻繁な切り替えを避けるための余裕であり、リザーバーは早めに画質を下げて止まるのを防ぐ余裕である[6]。

この方式の利点は、測りにくい量(回線容量)ではなく、自分で確実に数えられる量(再生できる残り時間)に基づく点にある。バッファが十分にあれば、回線が一時的に落ちても再生は続く。

ピーク時間帯に実ユーザーを対象にした実験では、対照群に比べて、当時の商用アルゴリズム(Netflixが使っていたもの)に比べて、再生が止まる率(リバッファ率)を10〜20%減らしつつ、平均画質は同程度に保てた。arXiv版の要旨は20%、出版版は10〜20%であり、後者に従う[6]。なお、再生開始直後はバッファが空であるため、この段階では回線の推定も併用する必要がある、と同論文は述べている。

したがって、バッファ方式は万能ではなく、「推定が難しい状況での、止まりにくさを優先した設計」と読める。一方、画質の段(ビットレートのはしご)の側にも見直しの余地がある。作品によって、同じ段がちょうどよいとは限らない。

5. アニメは、すくない データでも きれいに 見えるの?

5. 作品ごとに画質の段を変える:アニメと動きの複雑な映像

5. 作品ごとの画質の段:同じ5800kbpsでも足りる作品と余る作品

どんな 作品にも 同じ がしつの だんを つかうと、作品に よっては ぐあいが わるく なります。ネットフリックスの 2015年の ぎじゅつブログが、そう 書いて います[7]。

たとえば、動きや もようが ごちゃごちゃした えいぞうでは、いちばん 重い 5800 キロビット/秒でも、四角い ブロックの ような ノイズが 出る ことが あります。

反対に、アニメのような かんたんな えいぞうでは、5800 キロビット/秒は 1080p に きれいに 見せるには、ずっと 多すぎる りょうだと 書かれて います[7]。

だから、作品ごとに がしつの だんを つくり かえると いう 考えかたが 出ました。ここで つかうのは、引用元の 記事を 通して 知った 話です。

画質の「段」は、すべての作品で同じでよいのでしょうか。ネットフリックスは2015年末の技術ブログで、全作品に同じビットレートのはしごを使うと向き不向きが出る、と述べたと、Streaming Mediaの記事は伝えています。映像が複雑な作品では、最高の5800kbpsでもブロック状のノイズが目立つことがあります。反対に、アニメのような単純な映像では、5800kbpsは1080pをきれいに見せるのに必要な量よりずっと多い、とされています[7]。

同じ段を全作品に当てはめると、複雑な作品は足りず、単純な作品は余ります。そこで作品ごとに画質の段を決め直す考え方が出てきました(per-titleと呼ばれます)。

これは原文を直接読めず、引用元の記事を通した情報です。そのため、具体的な節約量などは書きません。ここで言えるのは、「同じ1080pでも、作品によって必要なデータの量は違う」という点までです。

動画の中身に合わせて画質の段を用意すると、複雑な映像では足りず、単純な映像では余る問題を調整できる。この考えは、画質を選ぶ判断とつながっています。

Streaming Mediaの記事は、Netflixが2015年末の技術ブログで述べた内容として、全作品に同一のビットレートのはしごを使う方式の問題を紹介している。複雑な映像では最高の5800kbpsでもブロック状のノイズ(blockiness)が出ることがあり、アニメのような単純な映像では5800kbpsが1080pの良好な符号化に必要な量よりはるかに多い[7]。

この指摘は、前章までの話と別の層にある。バッファ方式は、ある作品の用意された段の中から「どれを選ぶか」の問題を扱う。一方、作品ごとの画質の段(per-title encoding)は、「どんな段を用意するか」の問題である。複雑な映像は同じ見た目を保つのに多くのビットが要り、単純な映像は少なくて済む。したがって全作品共通の段は、一方では不足、他方では過剰になる。

ただし、Netflixの原文には取得できず、この記事は引用元の記事に依拠している。具体的な削減率は資料に無いので書かない。

では、これらの仕組みは、画面の上でどう見えるのだろうか。

6. じぶんの アプリで、がしつが かわる しゅんかんを さがそう

6. 見え方の変化を、画面の上で探してみる

6. 手元の観察と、原典に当たるなら

おうちの 人と いっしょに、動画の アプリを ひらいて みましょう。がしつを「自動」に している ときは、見はじめた ばかりの ところで、すこし ぼやけて いて、あとから くっきり する ことが あるかも しれません。

見つけたら、「どのくらいで くっきり したか」を 数えて みます。アプリに よって ちがうので、見つからなくても だいじょうぶです。

がしつの 表しめが 出る アプリでだけ、数字が 何びょうぐらいで かわるか、かぞえて みましょう。

どこから とどいて いるのかは、画面からは 見えません。でも、近くに コピーが あるかも しれない、と 思うと、ふだんの 動画が すこし ちがって 見えて きます。

家族と一緒に動画アプリを開き、画質の設定が「自動」になっているものを選びます。再生の最初の数秒がやや粗く、少したってから細かくなる様子は、バッファ方式の考え方(バッファが少ないうちは低めの画質)と合うものです。ただし実際のアプリの動きは決まっておらず、見えないこともあります。見えたら、何秒ぐらいで変わったかを数えてみてください。

回線を意図的に細くする必要はありません。ほかの人が使っている時間と、そうでない時間で見比べるだけで十分です。

この記事の数字は、公式サイトと2014年の論文、2015年の記事から取ったものです。Open Connectの公式ページと、論文の図を見ると、画質の切り替えが何を基準に決まるのか、もう少し具体的に追えます[3][6]。

動画が届く道のりのうち、圧縮やHLSのつくりは別の記事で扱っています。ここでは「どこから来て、画質を誰がどう選ぶか」に絞りました。

手元の観察としては、画質設定が自動の動画アプリで、再生開始直後の数秒と、その後の見え方を比べる方法がある。バッファが空の段階では低めの画質から入る設計が論文では前提になっているが、実際のアプリがその方式かどうかは、公開資料からは分からない。観察で見えなければ、それも一つの結果である。

原典に当たるなら、Netflix Open Connectの公式ページ(設置条件・初期設定の目安)と、Huangらの論文(バッファ量と画質を結ぶ図、実ユーザー実験)が手がかりになる[3][6]。いずれも英語である。論文では、10〜20%という数字がどの比較で出たのか、画質が同程度とはどう測ったのかを、図と表で確かめられる。

RFC 8216は、バリアントの並べ方や切り替えの規定を確認する材料になる[2]。この記事で扱わなかったライブ配信の遅延や、台数・通信量の統計は、また別の資料が要る。

しらべた もとの じょうほう

参考にした情報源

参考にした情報源と、その使い方

本文の参照番号と対応しています。英語の資料が中心です。二次資料経由のものは、本文で断っています。

  1. MDN Web Docs, CDN https://developer.mozilla.org/en-US/docs/Glossary/CDN (CDNの基本)
  2. RFC 8216 HTTP Live Streaming https://www.rfc-editor.org/rfc/rfc8216.html (バリアントストリームと切り替え。情報提供の文書)
  3. Netflix Open Connect https://openconnect.netflix.com/en/ (ISPへの無償提供、提携数、初期設定の目安)
  4. Netflix, How Netflix works with ISPs around the globe https://about.netflix.com/en/news/how-netflix-works-with-isps-around-the-globe-to-deliver-a-great-viewing-experience (オフピークの事前コピー)
  5. APNIC Blog, Netflix content distribution through Open Connect https://blog.apnic.net/2018/06/20/netflix-content-distribution-through-open-connect/ (近くにない作品が求められたときの経路。二次資料)
  6. Huang ら, A Buffer-Based Approach to Rate Adaptation (SIGCOMM 2014) https://ar5iv.labs.arxiv.org/html/1401.2209 (バッファ方式、4秒の塊、回線容量の見積もりの難しさ。arXiv版)
  7. Streaming Media, How Netflix Pioneered Per-Title Video Encoding Optimization https://streamingmedia.com/Articles/Editorial/Featured-Articles/How-Netflix-Pioneered-Per-Title-Video-Encoding-Optimization-108547.aspx (作品ごとの画質の段。二次資料)

なおした ところ

更新履歴

更新履歴(改版の記録)

  •  初版を公開。

このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。