Edited at

映像伝送するときの通信速度の考え方 [超基本]

機械系から情報系に移った人間としては、データ量に関する話が全くわかりませんでした。

データ量についてわからないので、通信速度の限界みたいな話になると、完全にお手上げです。

例えばUSBカメラが1つあって、接続先のパソコンから別のパソコンにリアルタイムで動画を伝送したいとき、どのくらいのサイズの映像だったら、何fpsで送れるのか。

パソコン周りがいろいろと複雑に見えすぎて、全く見当がつきませんでした。

同じように、他分野から移ってきた人(基礎をあまりやってこなかった人)は悩むと思うので、とっかかりの部分を書きます。

落ち着いて考えれば簡単でした。


考え方

基本的に通信速度を考える際は、1つのデータの量と、伝送の頻度(fps)と、経路(ケーブルなど)の容量に注目すればいい。


簡単な例を使って実際に考える

先ほど挙げた、「USBカメラが1つあるときに、接続先のパソコンから別のパソコンにリアルタイムで動画を伝送したい」例。

https://gyazo.com/0f5903c17a615cd284f009e0ed97d325


1つのデータ量

以下の映像を仮定します。

サイズ: 1280×1024

カラー: RGB

このとき、単純なbitmap画像を考えると、1ピクセルが持つ情報はRGB。

RGBは基本的に、それぞれ0-255の8bit、つまりそれぞれ1byte。

よって、1ピクセルが3byteのデータ量になります。

https://gyazo.com/47dd656f957afaa38d903de289c72cdf


これが1280×1024ピクセルあるので、

1枚の画像のデータ量は、

3×1280×1024[byte]

= 3×1280×1024÷1024 [K byte]

= 3×1280×1024÷1024÷1024 [M byte]

= 3.75 [MB]

です。


伝送頻度(fps)

fpsはframe per secondなので、1秒間に何個のデータを送るかです。

30fpsを仮定すると、上で考えたように1つのデータ量が3.75[MB]であれば、1秒間に送信するデータの量は、

3.75×30 [MB/s] = 112.5 [MB/s]

です。つまり、1秒間に112.5メガバイトのデータを送れれば、うまく通信できるということになります。


経路(ケーブルなど)の容量

経路の通信容量の単位では、bpsというものをよく見ます。bit per secondの略です。

LANケーブルだと、1Gbpsのものを最近よく見ます。

1秒間に1ギガビットのデータを送れる、ということです。

では、このケーブルで、さっき考えた映像の伝送はできるでしょうか?

確かめるために単位を揃えます。

バイトをビットにして、メガをギガにします。

112.5 [MB/s]

= 112.5×8 [Mbps]

= 112.5×8÷1024 [Gbps]

= 0.879... [Gbps]

1秒間に送るデータの量は、0.879ギガビットです。

つまり、できそうです


実際のケース


経路の複雑さ

実際は、同じ部屋内での通信ではなかったり、無線LANを使ったり、カメラとパソコンをつなぐケーブルも考えたり、と、経路の部分が複雑になると思いますが、考え方は同じです。

1番容量が小さい経路に律速されることだけ注意すれば大丈夫です。


画像圧縮

画像はjpgやpngなどの形に圧縮されていることがほとんどです。その場合、画像1枚のデータ量がどれくらいになるかを計算しなおせば大丈夫です。

ただ、画像を圧縮する場合は、圧縮する時間も考慮する必要があることに注意してください。