YouTubeを使った配信が一般層にまで普及して久しいですが、安定的に配信する方法について、技術的な観点から考えてみました
何をもって安定して、というのかは人それぞれだと思いますが、ここでは50Mbpsのビットレートでも切れずにYouTube Liveへ送り続ける事が出来るという話をします
そもそも何で通信が切れるのか?
YouTube Liveへ送る際に使用するプロトコルはRTMPと呼ばれる、TCPベースの物を使用します
実はこのプロトコルが曲者です
TCPは、現在のWebページを表示する際に使用されているHTTPなどでも使われています。なぜなら、TCPはデータがロスした場合でも、全部再送して送り届けることが使命として作られたプロトコルだからです
故に、Webページのように絶対見てもらいたいような媒体ではHTTPが使われるのです
TCPが何なのかはこれで分かったと思いますが、ではRTMPはどうでしょうか
RTMPもベースはTCPを使っています。故に、データの欠損が発生した場合にはデータの再送という事を行うのです
しかしながら、これが先ほどのWebページのHTTPのようにデータ容量が少ないものであればいいのですが、動画データを送るとなると、それは話が違ってきます
一度ロスしたデータをもう一度送ろう、送ろう、送ろうとし続けるのです
これによって、送る事が可能な領域の限界を超えます。そしていつしかパンクするのです
この瞬間、TCPの接続は破綻します。特にTCPはセッションを張るような繋ぎ方をしているので、一度切れてしまうとTCPは再度つながないと再びデータを送り始める事はしません
例にするならば、電話をしていた相手が何かの拍子に電話が切れてしまった場合に、放っておいても再接続をしない、これがTCPのセッションの概念です。もう一回かけ直しが必要ですよね。
IPv4とIPv6の違いを学ぶ
では根本的にTCPを使うのを止めればいいんじゃないか?という考え方もあります
ですが、YouTubeLiveはRTMP以外は、基本的には受け付けていません
従ってRTMPで送り続けるしかないのです。それでも何か安全策は無いか?というところで、本題に戻ってきます
一つの回答は、空いている回線を使用するというのがあります
例えば、ホテルに泊まったりすると、共用で通信回線を使うので速度が出ませんが、自宅の場合はどうでしょう
スイスイ通信が出来ますよね。この考え方を通常のインターネットの世界でも考えた場合、その解が見えてきます
その解答こそがIPv6なのです
そもそもYouTube LiveはIPv6に対応しているのか?
実は対応しています(2019/3/6現在確認済み)
a.rtmp.youtube.comに対して、IPv6の契約をしている回線からpingを飛ばすと、ちゃんとIPv6のアドレスから返ってきます。こんな風に
我が家はつい最近v6プラスという契約に切り替えたのですが、YouTube Liveへpingを送ると、ちゃんとIPv6でpingが返ってきます
そして、自宅からOBSを使って50Mbpsという普通ではあり得ないようなビットレートでRTMPを送り続けてみたところ、ネットのゴールデンタイムと呼ばれる時間帯でも全く途切れる事がありませんでした
そして、安定して、という部分で更に言うなれば、IPv6を使って配信をした場合は、タスクマネージャーのネットワークのグラフが綺麗に50Mbps前後で送り続けています
これをわざとIPv4の回線で送ると、グラフが乱高下し、全く安定していない通信となってしまいます
つまりどういう事かと言うと!
IPv6でYouTube Liveへ送り込めば、安定した配信をする事が出来るという事です
プロバイダの設備を経由するIPv4では、そこがボトルネックになってしまうという事ですね。
IPv6の活躍の場を見つけた気がします