1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

4GPi ルータから SORACOM Relay を使ってみる

Last updated at Posted at 2025-10-21

はじめに

メカトラックス株式会社maeda01です。

下記記事で 4GPi を使うことでルータを構築する方法が紹介されています。

このルータを活用して、 4GPi ルータに IP カメラ (ネットワークカメラ) を接続してオンラインストリーミングを行う方法をご紹介します。

オンラインストリーミングのシステムをいちから構築するのは大変ですが、SORACOM Relay というサービスを使用することで手軽にストリーミングを行うことができます。

本記事ではこの SORACOM Relay を使って ストリーミングなど、IP カメラの操作をしてみたいと思います。

SORACOM Relay とは

SORACOM Relay は RTSP 対応ネットワークカメラの映像・音声を、SORACOM 経由で安全にクラウドに転送できるサービスです。

ネットワークカメラにおいて標準的な RTSP によるシグナリング、RTP プロトコルによるメディアデータ転送に対応しているため、カメラへの SDK のインストールやファームウェアの変更なくクラウド連携を実現します。

SORACOM Relay 紹介ページ より引用

このサービスを使用すると手軽かつ安全にカメラ映像をクラウドに転送したりストリーミングを行ったりすることができるようです。

SORACOM Relay は現在 Limited Preview として提供されており、利用には申し込みが必要です

機器構成

システムの概要

本記事で構築するシステムは以下のような流れでストリーミングが実行されます。
・SORACOM Relay セッションの開始
・SORACOM クラウドから 4GPi ルータのポートにアクセス (今回はポート 55555)
・4GPi ルータのポートから IP カメラにパケット転送
・SORACOM クラウドに対して動画の配信

また、SORACOM Relay については API が用意されています。

こちらも使用して静止画を保存できるようにします。

システムの概要図は以下のようになります。

image.png

4GPi のセットアップ

以下の記事を参考に、4GPi のセットアップを行ってください。

APN 設定を行い、LTE 通信ができる状態になると 4GPi のステータス LED (青色 LED) が点滅します。
加えて、wwan0 に IP アドレスが割り当てられます。

mtx@raspberrypi-blog:~$ ip a show wwan0
4: wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1430 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/none
    inet 10.***.***.***/** brd 10.***.***.*** scope global noprefixroute wwan0
       valid_lft forever preferred_lft forever

ルータ機能の構築

ufw の設定

パケット転送設定

パケットの転送を行うため、 ufw をインストールします。

$ sudo apt -y install ufw

4GPi の OS イメージでは ufw があらかじめインストールされています。

パケット転送の許可を行います。

/etc/ufw/sysctl.conf
net/ipv4/ip_forward=1

外部からの通信を許可する設定とルーティングを許可する設定を行います。

sudo ufw default allow incoming
sudo ufw default allow routed

ufw のステータスを確認し、上記設定が反映されていることを確認します。

mtx@raspberrypi:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), allow (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

IP マスカレード設定

NAPT の設定を行い、wwan0 の IP アドレスへの書き換えを行うテーブルを追加します。
/etc/ufw/before.rules に以下の記述を追加します。

/etc/ufw/before.rules
 # NAT Table rules
 *nat
 :POSTROUTING ACCEPT [0:0]
 -F
 -A POSTROUTING -s 10.20.0.0/24 -o wwan0 -j MASQUERADE
 COMMIT

DHCP サーバーの設定

dnsmasq をインストールして DHCP サーバーの設定を行います。

sudo apt install dnsmasq

インターフェース eth0 から有線 LAN で接続したデバイスに対して IP アドレスを割り当てるようにします。
まずは eth0 の IP アドレスを固定します。

sudo nmcli c add type ethernet ifname eth0 ipv4.method manual ipv4.addresses 10.20.0.1/24

ethernet-eth0 というコネクションが作成されるのでこれを有効にします。
デフォルトの Wired connection 1 などのコネクションがある場合は削除もしくは無効化します。

sudo nmcli c delete "Wired connection 1"
sudo nmcli con up ethernet-eth0

eth0 が割り当てる IP アドレスの範囲を設定します。
/etc/dnsmasq.conf に以下の記述を追加します。

/etc/dnsmasq.conf
interface=eth0
dhcp-range=10.20.0.2,10.20.0.40,255.255.255.0,24h

編集が終わったら dnsmasq を再起動します。

sudo systemctl restart dnsmasq

ポートマッピングの設定

外部から Raspberry Pi のグローバルアドレスの特定のポートにアクセスしたときにカメラの IP アドレスに転送するようにポートマッピングの設定を行います。

今回は Raspberry Pi の wwan0 のアドレスのポート 55555 にアクセスしたときに、カメラの IP アドレス 10.20.0.11 のポート554 に対して転送するような設定を行います。

iptable コマンドを使用して設定を行います。

sudo iptables -t nat -A PREROUTING -i wwan0 -p tcp --dport 55555 -j DNAT --to-destination 10.20.0.11:554
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

以上の設定でポートマッピングが行われるようになります。

ポートマッピングの動作確認

ポート55555 にアクセスしたときに 10.20.0.11:554 まで転送されているかの確認を行います。
SORACOM のオンデマンドリモートアクセスの機能を使用します。

オンデマンドリモートアクセスでデバイス (4GPi ルータ) のポート55555にアクセスする設定を作成します。

Napter_ポート設定.png

保存ボタンをクリックすると 4GPi ルータのポート55555 にアクセスするための IP アドレスとポートが発行されるのでそれをコピーします。

Napter_ポート設定完了.png

発行された IP アドレスとポートを使用して VLC でストリーミングが開始されるか確認します。
VLC media player から、ネットワークストリーミングを開くを選択します。
IPカメラの認証情報とIPアドレスを指定します。

Napter_VLC.png

ポートマッピングが正常にできていると カメラのIPアドレス:554 に転送され、VLC でも映像を確認することができます。

napterの画像.png

SORACOM Relay での動作確認

実際に SORACOM Relay を使用してストリーミングを開始します。
データの送信先には SORACOM が管理している Amazon Kinesis Video Streams があり、これを選択するとカメラの映像をリアルタイムで確認することができます。

今回はこれを使用してみます。

まずは Relay の画面から新規セッションを作成します。

relayセッション作成.png

次に映像配信に必要な情報を入力します。

接続先 SIM: 4GPi ルータに使用している SIM の ID
ポート番号: カメラのアドレスに転送するためにルータで待ち受けているポート、今回は 55555
ユーザー名: IPカメラの RTSP サーバーに接続するためのユーザー名
パスワード: IPカメラの RTSP サーバーに接続するためのパスワード
パス: RTSP サーバーのパス、今回は /live/sub
転送先サービス: 映像の転送先、今回は Amazon Kinesis Video Streams (ソラコム管理)

セッション情報.png

入力が終わったら作成ボタンをクリックしてセッションを開始します。
開始してしばらく待つとカメラの映像が表示されます。

relay_kvs.png

SORACOM Relay API での操作

SORACOM Relay では API が提供されています。
カメラの映像のスナップショットをローカルに保存したり SORACOM Harvest Files に送信したりすることができます。

ストリーミングを続けていて通信容量が気になる場合などに便利です。

実際にこの API を使ってスナップショットを SORACOM Harvest Files に送信してみます。

このドキュメント を参考に事前に SORACOM API キーとトークンを発行しておきます。

発行した API キーとトークンを使用して API を実行します。
パラメータは先ほど Relay のセッションを作成したときと同じものを使用します。
IP カメラの認証も先ほどと同じく Basic 認証を使用します。

curl -X POST "https://api.soracom.io/v1/sims/<SIM ID>/downlink/rtsp" \
  -H "X-Soracom-API-Key: <API キー>" \
  -H "X-Soracom-Token: <トークン>" \
  -H "Content-Type: application/json" \
  -d '{
    "command": "snapshot",
    "port": 55555,
    "path": "/live/sub",
    "authentication": {
      "type": "basic",
      "username": "admin",
      "password": "12345"
    },
    "options": {
      "destinations": {
        "harvestFiles": {
          "filePath": "/relay/snapshots/{sim_id}_{time}.jpg"
        }
      }
    }
  }'

これを実行すると実行タイミングのカメラの映像が Harvest Files に保存されます。
上記コマンドだと /relay/snapshots 以下に SIM ID とタイムスタンプ付きのファイルで保存されます。

relayAPI.png

おわりに

SORACOM Relay サービスを使用することでIPカメラを手軽に扱えることが確認できました。
動画ファイルを Harvest Files や S3 に転送して画像解析などにも活用できると思うので参考にしていただければ幸いです。

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?