前回の記事では、SRTのソースコードをWindowsでビルドするためのTipsを解説しましたが、第2回の本記事では実際にSRTを動かしてみて、その実力を確認していきます。SRTの使いどころとしては主眼である映像(動画)転送となりますが、映像転送についてはすでに多くの検証例がありますので、今回はSRTの「ファイル転送」機能を使って、どれほど高速に転送できるのかを見ていきます。
動作環境について
動作環境としては、クラウド上にファイルの「送信用のサーバ」と「受信用のサーバ」を用意し、2つサーバの間を仮想ネットワークで直接接続してSRTを使ってファイルを送受信してみます。クラウドはMicrosoft Azureを選択しました。仮想マシンの詳細は以下表の通りとなります。
項目 | 送信サーバ | 受信サーバ |
OS | Ubuntu | Ubuntu |
仮想マシンサイズ | Standard D4as_v4 | Standard D4as_v4 |
リージョン | 東日本 | ブラジル南部 |
ファイル転送の速度を試すために、リージョンはなるべく離れた拠点を選びました。また、今回の目的はビルドではないためOSにはUbuntuを使用し[1]、仮想マシンのサイズについては大容量ファイルで試すためにストレージ容量を優先しました。また、リージョン間のネットワークには、お手軽なAzureの仮想ネットワーク ピアリングを使用します。
ファイル転送の準備
それでは実際にSRTを動かしていきたいと思いますが、まずは準備をしていきます。前述の動作環境については、すでに用意してあるという前提で説明していきます。
大容量ファイルを準備する
ファイル転送速度を見ていきたいため、1GBほどのサイズのファイルを用意してください。手頃な大容量ファイルがない場合は、下記コマンドなどを使用し送信サーバ側にファイルを用意しましょう。
head -c 1G /dev/urandom > 1G_size_file.txt
コマンドを準備する
SRTのファイル送受信プログラムは、srt-file-transmit、と言うファイル名です。
受信サーバ側のプロセスを立ち上げるコマンドは下記となります[2]。
./srt-file-transmit srt://:4201 ./receive
一方の送信側については、下記コマンドとなります。送信ファイルのパスには絶対パスを指定します[3]。
./srt-file-transmit file://{送信ファイルの絶対パス} srt://{受信サーバのIPアドレス}:4201
以上でファイル転送の準備は完了となります。では実際に試していきましょう。
実際にファイル転送してみる
まずは、受信サーバ側のプロセスを前述のコマンドで立ち上げ、送信サーバ側から いつでも受け取れる状態にしておきましょう。受信サーバ側プロセスを立ち上げたら、次は送信サーバ側プロセスを立ち上げます。送信サーバ側コマンドを実行すれば、すぐに転送が始まります。
上述の画像は実際に日本からブラジルに1GBのファイルを転送した際の結果となります。転送開始から完了まで約30秒ほどとなりますので、転送速度は33MB/秒(264MBps)となりますが、結構早い速度であることがお分かりいただけると思います。
さいごに
SRTはその始まりからとかく動画転送に目が向けられがちですが、このようにファイル転送においても有効だと言えるでしょう。地球の裏側へなど、離れた拠点間においてファイルを高速転送したいというニーズには、SRTは最適ではないでしょうか。SRTについて、ご相談がございましたら、是非ともお問合せください。
- Ubuntu用のSRTのビルドはGithubに挙がっている説明の通りに実施すれば簡単に実現できます。Windows 10のWSL上でもビルドは可能です。[↩]
- コマンドの詳細については、srt-file-transmitのヘルプを確認してください。[↩]
- 例えば送信ファイルの場所が”/home/hoge/files/file_for_send.txt”ならば、コマンドに指定する値は”file:///home/hoge/files/file_for_send.txt”[↩]