メインコンテンツへスキップ
見出し画像

動画の画質が急に粗くなるのはなぜ? ストリーミングの仕組みを調べてみた

    こんにちは。まなぶです。
    ふだんはシステムエンジニアをしながら、noteの記事を書いています。
    前回の記事「既存店の客数7%減。それでもニトリが儲かり続ける理由を分解してみた」を読んでくださった方、ありがとうございます。

    2時間の映画でも、再生ボタンを押せば数秒で始まります。昔は動画を見るのに、ダウンロードが終わるまで待つのが当たり前でした。それに、見ている途中で急に画質が粗くなって、しばらくすると元に戻る、ということもあります。動画配信の裏側で何が起きているのか、仕組みを調べてみました。


    動画は「数秒ずつの小さな断片」に分けて届いている

    動画配信サービスの動画は、1本の大きなファイルのまま送られてくるわけではありません。数秒〜10秒ほどの小さな断片(セグメント)に分けて、サーバーに置かれています。

    再生ボタンを押すと、アプリはまず「目次」のようなファイル(マニフェスト)を受け取ります。目次には、どの断片がどこにあるかが書かれています。アプリは目次を見ながら、最初の断片を取ってきて、すぐに再生を始めます。そして、見ている間に、次の断片、その次の断片と、少し先まで取ってきてためておきます。

    画像
    断片に分けて届ける

    全部をダウンロードしてから見るのではなく、「見る分だけ、少し先まで取ってくる」。これが、2時間の映画でもすぐに再生が始まる理由です。早送りしたときも、目次を見て、その場所の断片から取ってくればいいわけです。

    画質が勝手に変わるのは、回線に合わせて選び直しているから

    見ている途中で画質が粗くなるのにも、理由があります。

    動画配信サービスは、同じ動画を、高画質・中画質・低画質など、いくつかの画質で用意しています。どの画質の断片も、同じ場面で区切ってあります。アプリは、断片を1つ取ってくるたびに回線の速さを測って、「次の断片は、どの画質なら間に合うか」を選び直しています。この仕組みを「アダプティブビットレート」と呼びます。

    画像
    回線に合わせて画質を選ぶ

    電車がトンネルに入って回線が遅くなると、アプリは止まらないように低い画質の断片に切り替えます。回線が戻れば、また高い画質の断片を取ってきます。画質が一時的に粗くなるのは、「止まるよりは、粗くても続けて見られるほうがいい」という判断の結果だったわけです。

    遠くのサーバーではなく、近くの「倉庫」から届けている

    もう1つの工夫は、動画を置いておく場所です。

    世界中の人が、海外にある1か所のサーバーから動画を取ってきたら、遠いぶん時間がかかり、サーバーも混み合ってしまいます。そこで、利用者の近くにたくさんのサーバーを置いて、そこにコピーを置いておく仕組みが使われています。これを「CDN(コンテンツ配信ネットワーク)」と呼びます。物流で言えば、地域ごとに倉庫を置いて、近くの倉庫から配達するイメージです。

    たとえばNetflixは、通信会社のネットワークの中に、自社のサーバーを置かせてもらう仕組みを持っています。サーバーはNetflixが無料で提供し、置き場所や電源、回線は通信会社が用意します。私たちが見ている動画の多くは、意外と近くのサーバーから届いているのです。

    「データがどこにあるのか」という話は、以前「「クラウドに保存」の"クラウド"って結局どこにあるの? 調べてみた」でも書きました。


    まとめ:動画は「分けて・選んで・近くから」届いている

    • 動画は数秒〜10秒ほどの断片に分けられていて、アプリは見る分だけ少し先まで取ってきている

    • 同じ動画がいくつかの画質で用意されていて、回線の速さに合わせて、断片ごとに画質を選び直している

    • 利用者の近くに置いたサーバー(CDN)から届けることで、速く、混み合わずに見られるようにしている


    最後まで読んでいただき、ありがとうございました。

    動画の画質が急に粗くなったのは、どんな場面でしたか? 電車の中、家のWi-Fi、旅行先など、ひと言でもコメントで教えてもらえるとうれしいです。

     
     
    どこにでもいる普通のシステムエンジニアです。 開発に特化したアカウントを作りたいと思い始めてみました。 また、note自体についても深く知るために分析や実験をしていこうと思います。 気の向くまま発信していきますので、 良ければ温かい目でお付き合いください。

    あなたへのおすすめ