質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

1362閲覧

ラズパイからインターネット上のサーバーに映像配信

zukky619

総合スコア5

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2022/05/19 13:38

編集2022/05/20 12:16

前提

Gstreamerと映像配信について勉強中です。

実現したいこと

電源を入れてどこかのWi-Fiにつなぐと、インターネット上の(アドレスが既知の)映像保存サーバーに自動でカメラ映像を送信するラズパイが作りたいです。
(追記)送信された映像はリアルタイムでも再生したいです。再生時に複数窓での再生は想定しません。

困っていること

Gstreamerで映像配信をする場合、下記の2つの方式を学びました。

  • 方式1:ラズパイにRTSPサーバーを立て、RTSPクライアントの要求をトリガーにクライアントにカメラ映像を配信する
  • 方式2:ラズパイから相手先IPアドレスとポートを指定してカメラ映像をUDP送信する

方式1の場合、インターネット上の映像保存サーバーがラズパイのIPアドレスとポートを知らねばならず、またラズパイが参加しているルーターにNATの設定が必要で、今回実現したいことには不適合と思っています。
方式2の場合、ラズパイが1台なら可能そうですが、ラズパイが複数の場合、映像保存サーバーの同一ポートに同時には映像配信ができないのではと思っています。

したがって自前で、事前にラズパイから映像配信サーバーにどのポートに映像を送信すればよいか問い合わせを行い、その結果得られたポート番号に方式2で映像配信をするのがよいかと思いました。
一方で、世の中にはこれをスマートに行う仕組みがあるのだろうと思っていて、そのあたりのキーワード、情報をご教授いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2022/05/19 15:02

配信を見る人は不特定多数ですか? もしくは、監視カメラのように特定の人だけ見ることが出来れば問題ないですか?
tanat

2022/05/19 15:13

また、 - リアルタイムに配信出来る必要があるか - 「どこかのwifi」とは、自分が管理出来ないフリーWifiなどを想定していますか? あたりについても追記をお願いします。
zukky619

2022/05/20 12:18

ありがとうございます、リアルタイムでも確認したいです。不特定多数である必要はないです。 また、WiFiは自分が管理できずルーティング設定はいじれない想定です。
guest

回答2

0

ベストアンサー

回答の前提

電源を入れてどこかのWi-Fiにつなぐと

ということなので、HTTP/HTTPSでしかアウトバウンド通信出来ないような環境を想定しての回答です。

リアルタイムに配信を閲覧できる必要がある場合

方式1の場合、インターネット上の映像保存サーバーがラズパイのIPアドレスとポートを知らねばならず、またラズパイが参加しているルーターにNATの設定が必要で、今回実現したいことには不適合と思っています。

これは正しいのですが、VPNを使うことで解決が可能です。
SoftEther等のHTTPS上でVPNを構築できるソフトやサービスを使用してVPNを構築することで、
片方がHTTP/HTTPSでしか通信出来ないような環境でも
動画保存サーバと同じLAN上にRaspberryPiを(仮想的に)同じLAN上に配置することが可能になります。
この場合、動画保存サーバ(や、その他の動画を閲覧したい人)からはVPN上のRaspberyPiのローカルIPを叩けばいいので、VPNに接続さえ出来ればLAN内での操作と同じになります。
SoftEther RaspberyPi IoTあたりで検索するとイメージがつかめると思います。

UDPが動作するWifi環境に限定していいのであれば、tailscaleというVPNサービスを使うともっと楽が出来ます。

また、TCP22やその他のポートのアウトバウンド通信が出来る前提であれば、
RaspberryPiからSSHで動画保存サーバに接続して、逆ポートフォワードで動画保存サーバからRaspberyPiに接続するという方法もあり、こちらはSSHさえ接続できればトンネルを構築できるのでVPNよりお手軽です。
正確な技術名称は知りませんが逆SSHポートフォワードとかで検索してみてください。

リアルタイムに配信を閲覧できる必要が無い場合

  1. 適当な間隔で動画をファイルとして保存する
  2. HTTPS経由でファイルを保存できるオンラインストレージ(AmazonS3とか)に保存する
  3. 映像保存サーバは適当なタイミングでオンラインストレージから動画を取得して、必要であれば結合する

という感じにすると、とても簡単です。
要件によっては2のアップロード先をyoutube等の動画配信サービスにする(APIを使ってアップロードする)と、動画保存サーバも必要なくなりますね。


方式2の場合、ラズパイが1台なら可能そうですが、ラズパイが複数の場合、映像保存サーバーの同一ポートに同時には映像配信ができないのではと思っています。

すぐに思いつくのは映像保存サーバ側の受信サーバを複数起動するようなケースですね。
使用する受信サーバの名前 複数起動とかで調べると求める答えが出てくるかもしれません。

投稿2022/05/20 13:02

編集2022/05/20 13:05
tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アマゾンとかで売ってるヤスモンの防犯カメラがまさにそれを行ってますね
カメラ側からは常時映像をサーバに送り続け、ユーザはスマホでそのサーバにアクセスしてその映像を閲覧します

まずは方式2で、1台だけでそれを実装してみてはいかがでしょう。
それがきっちり出来上がった後に、複数台のアクセスを考えるとよろしいかと

投稿2022/05/19 13:53

y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/05/19 14:50

知らないなら回答しなくていいんですよ。 > したがって自前で、事前にラズパイから映像配信サーバーにどのポートに映像を送信すればよいか問い合わせを行い、その結果得られたポート番号に方式2で映像配信をするのがよいかと思いました。 > 一方で、世の中にはこれをスマートに行う仕組みがあるのだろうと思っていて、そのあたりのキーワード、情報をご教授いただきたいです。
y_waiwai

2022/05/19 15:29

わからないならコメントしなくてもいいんですよw
Zuishin

2022/05/19 15:33

読み間違えているようなので、もう一回注意して読んでください。
y_waiwai

2022/05/19 22:58

まー、ややこしいのに絡まれてますが、こいつは無視しといてくださいw>関係各位
Zuishin

2022/05/19 23:48

> わからないならコメントしなくてもいいんですよw 絡むというのはこういうことです。 私は回答への評価をしているだけなので。 苦し紛れの人格攻撃はいただけませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問