1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リモナビ:ローカル環境のカメラ映像の監視(さらに容易に)

Posted at

この記事の改善方法の一つを新たに提供

リモナビ Receiver (Docker版のみ) に RTMP Server を搭載

 Windows環境では Sender, Receiver とも専用アプリを提供しており、前回の投稿ではそれを使った構成性を説明しました。

 今回も、構成は前回投稿と変わりません。
 ですが、 リモナビ Receiver が前回と異なり Docker版になります。この Receiver に今回、RTMP Server が搭載され、より簡単にライブ配信ができるようになったのです。
 今回は、より高度な機能を提供できる Receiver (Docker版) を使ってのご紹介です。

Windows 上で Receiver(Docker版)を動作させるには?

 Windowsで Docker を動作させるには WSL (Windows上で Linux を動作させるソフト)が必要で、これは現在のWindowsでは標準機能として具備されています。
 この WSL上で動作させる Ubuntu のインストール手順は、他投稿がたくさんあるのでここでは省略します。 ここでは WSLとDocker環境での接続先の設定アドレスが複雑なため、簡単な説明をします。

 Windows 上で Docker を動作させるなら、 WSL:Ubuntu をインストトールして、そのUbuntu上に RemoNavi Gateway 画面の手順に従ってReceiver Docker をインストールし、起動するだけです。ところが問題が一つあります。それが Receiver Docker から接続先への IPアドレスです。
 WSLは VMようなもの。 そしてDockerもコンテナ、ある種VMのようなもの。つまり2重のVM構成のネットワークが存在し、それぞれのネットワーク・インタフェースにはIPアドレスが付与されているのです。(とはいえ、そこはWindows。内部の仮想スイッチ機能で多くを解決してくれてはいます)

接続先アドレス指定について

 Windows Receiver アプリの場合、そのマシン上でただ動作しているので、Windowsホストからの接続先IPアドレスと、Receiverアプリからの接続先IPアドレスは一致しているのですが、Receiver Docker の場合、一部の接続先の IPアドレスが若干異なります。

 上図は Receiver(Docker) in WSL 環境でのネットワーク・インタフェースの構成図です。
 リモナビでは接続先 IPアドレス | ホスト名を指定して接続するので、このIPアドレスの認識はとても重要です。
 以下に想定される利用用途での接続先IPアドレスを示します。

  • Gateway設定における RTMP Server の接続先
    • 127.0.0.1
    • RTMP Server が Docker内に存在するため、Docker内 I/F を指定します
  • このPCで ffmpeg を使って RTMPサーバへ映像を転送する際の接続先
    • localhost
    • カメラ映像をRTMPサーバへ転送
      • ffmpeg -i rtsp//カメラ接続URL -ar 4410 -f flv rtmp://localhost/live1/{key}
    • Receiver Docker を以下のように起動する場合、[ -p ] のポート公開は Windows ホストの全てのネットワークインタフェースが対象となります。そのため RTMPサーバ(ポート番号 1935)への通信は WSL→ Docker → RTMP Server へと転送されます。
      • docker run -d -p 9080:80 -p 1935:1935 --name remonavi-receiver --privileged remonavi-receiver:1.0

Receiver (Docker)を使った場合の他の接続先

  • Windowsホストのリモートデスクトップをする場合の接続先
    • 172.20.208.1 か 192.168.84.170
    • Windowsホストの物理ネットワーク・インタフェースのIPアドレスは DHCP を利用する場合、起動毎に変更されてしまいます。 そうした IPアドレスを使うと、リモナビ Gatewayの設定は都度再設定しなければなりません。 そうしたことを避けるいい方法があります。 それがWindowsホストの WSL仮想ネットの IPアドレス 172.20.208.1 を使うことです。この IPアドレスは変更されません。
      • WSL仮想ネットの IPアドレス(172.20.208.1) の取得方法には2通りあります
        • Windows Power shell上で、 ipconfig を実行し、 vEthernet (WSL ...) と表示されるネットワークインタフェースのIPアドレス
        • WSL Ubuntu 上で、 ip route | grep 'default via を実行し表示されるIPアドレス
    • Receiver (Windowsアプリ) を使う場合は、localhost です。 Dockerを使う場合、localhostは Docker内の内部I/Fになってしまうので、この差を注意する必要があります。 Receiverに Windowsアプリ版を使うか、Docker 版を使うかで、接続先アドレスが変わってしまうのです。

まとめ

カメラ設定等は前回の投稿と変わりませんが、他が若干異なりますので、以下にまとめます。

  • リモナビ Receiver Docker をインストール & 起動
    • docker run -d -p 9080:80 -p 1935:1935 --name remonavi-receiver --privileged remonavi-receiver:1.0
       
  • リモナビ Gateway設定
    • 接続先ホスト[localhost] 接続先ポート[1935]
       
  • カメラを起動
  • カメラ映像を RTMP Server へ転送(Receiverと同じWindowsマシンの場合)
    • ffmpeg -i rtsp//カメラ接続URL -ar 4410 -f flv rtmp://localhost/live1/{key}

 前回の投稿では、 RTMP Server として RtmpRelay をインストールして使いましたが、Receiver Docker を使えばこの作業一切が不要となります。

 Receiver に搭載した RTMP Server は nodejs で動作する Node-Media-Server (オープンのソース)です。 RemoNavi ゼロトラスト環境の制限下でのみ接続利用するもののため、一般的なストリーミング公開とは違いますので、その点を考慮してお使いいただければです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?