
動画の画質が急に粗くなるのはなぜ? ストリーミングの仕組みを調べてみた
こんにちは。まなぶです。
ふだんはシステムエンジニアをしながら、noteの記事を書いています。
前回の記事「既存店の客数7%減。それでもニトリが儲かり続ける理由を分解してみた」を読んでくださった方、ありがとうございます。
2時間の映画でも、再生ボタンを押せば数秒で始まります。昔は動画を見るのに、ダウンロードが終わるまで待つのが当たり前でした。それに、見ている途中で急に画質が粗くなって、しばらくすると元に戻る、ということもあります。動画配信の裏側で何が起きているのか、仕組みを調べてみました。
動画は「数秒ずつの小さな断片」に分けて届いている
動画配信サービスの動画は、1本の大きなファイルのまま送られてくるわけではありません。数秒〜10秒ほどの小さな断片(セグメント)に分けて、サーバーに置かれています。
再生ボタンを押すと、アプリはまず「目次」のようなファイル(マニフェスト)を受け取ります。目次には、どの断片がどこにあるかが書かれています。アプリは目次を見ながら、最初の断片を取ってきて、すぐに再生を始めます。そして、見ている間に、次の断片、その次の断片と、少し先まで取ってきてためておきます。

全部をダウンロードしてから見るのではなく、「見る分だけ、少し先まで取ってくる」。これが、2時間の映画でもすぐに再生が始まる理由です。早送りしたときも、目次を見て、その場所の断片から取ってくればいいわけです。
画質が勝手に変わるのは、回線に合わせて選び直しているから
見ている途中で画質が粗くなるのにも、理由があります。
動画配信サービスは、同じ動画を、高画質・中画質・低画質など、いくつかの画質で用意しています。どの画質の断片も、同じ場面で区切ってあります。アプリは、断片を1つ取ってくるたびに回線の速さを測って、「次の断片は、どの画質なら間に合うか」を選び直しています。この仕組みを「アダプティブビットレート」と呼びます。

電車がトンネルに入って回線が遅くなると、アプリは止まらないように低い画質の断片に切り替えます。回線が戻れば、また高い画質の断片を取ってきます。画質が一時的に粗くなるのは、「止まるよりは、粗くても続けて見られるほうがいい」という判断の結果だったわけです。
遠くのサーバーではなく、近くの「倉庫」から届けている
もう1つの工夫は、動画を置いておく場所です。
世界中の人が、海外にある1か所のサーバーから動画を取ってきたら、遠いぶん時間がかかり、サーバーも混み合ってしまいます。そこで、利用者の近くにたくさんのサーバーを置いて、そこにコピーを置いておく仕組みが使われています。これを「CDN(コンテンツ配信ネットワーク)」と呼びます。物流で言えば、地域ごとに倉庫を置いて、近くの倉庫から配達するイメージです。
たとえばNetflixは、通信会社のネットワークの中に、自社のサーバーを置かせてもらう仕組みを持っています。サーバーはNetflixが無料で提供し、置き場所や電源、回線は通信会社が用意します。私たちが見ている動画の多くは、意外と近くのサーバーから届いているのです。
「データがどこにあるのか」という話は、以前「「クラウドに保存」の"クラウド"って結局どこにあるの? 調べてみた」でも書きました。
まとめ:動画は「分けて・選んで・近くから」届いている
動画は数秒〜10秒ほどの断片に分けられていて、アプリは見る分だけ少し先まで取ってきている
同じ動画がいくつかの画質で用意されていて、回線の速さに合わせて、断片ごとに画質を選び直している
利用者の近くに置いたサーバー(CDN)から届けることで、速く、混み合わずに見られるようにしている
最後まで読んでいただき、ありがとうございました。
動画の画質が急に粗くなったのは、どんな場面でしたか? 電車の中、家のWi-Fi、旅行先など、ひと言でもコメントで教えてもらえるとうれしいです。