Local Video Server 機能
Local Video Server 機能
Local Video Server は、デバイス上で HTTP サーバを立ち上げることで、同一ネットワーク内のデバイスからリアルタイム映像を取得するための機能です。
デバイス設置時の画角調整や、デバイスの状態確認などに利用できます。
サンプルコードは こちら
注意点
- 同一ネットワーク内のデバイスからのみアクセス可能です。インターネットを介したアクセスはできません。
actfw-core
のバージョンが2.10.0
以上である必要があります。- 映像の配信に計算リソースを多く消費するため、必要な場合のみ有効にできるよう act settings で有効/無効を切り替え可能な実装にすることを推奨します。
- 以下の例では
local_video_server
という設定で切り替えるようにしています。
- 以下の例では
使い方
-
デバイス詳細画面 から
mDNS設定
を有効化します (この機能は firmware version 3.2.0 以降で利用可能です)。 -
Act 設定で Local Video Server を有効化します。
-
デバイスのホスト名を確認します。
-
デバイスと同一のネットワークに接続している状態で、ブラウザから以下の URL にアクセスすると、デバイスの映像を取得できます。
http://<hostname>.local:5100
例:
http://example-device-100000000xxxx.local:5100
導入方法
-
actfw-core
のバージョンが2.10.0
以上になるようにdependencies.json
を修正します。{ ... "pip": ["actfw-core>=2.10.0"], ... }
-
ポート番号
5100
にデバイスの外からアクセスできるようにmanifesto
に以下の設定を追加します。+ "allow_all_networks": true, + "published_ports": [ + { + "container_port": 5100, + "host_port": 5100, + "protocol": "tcp" + } + ]
-
LocalVideoServer の有効/無効を切り替えるための設定を追加します。
+ "local_video_server": { + "title": "Enable Local Video Server", + "description": "Enable Local Video Server", + "type": "boolean", + "default": false + },
-
main ファイルに LocalVideoServer のコードを追加します。使い方は Take Photo コマンドで使う CommandServer と同様です。以下は典型的なアプリにおける変更例です。
# CommandServer (for `Take Photo` command) cmd = actfw_core.CommandServer() app.register_task(cmd) + # LocalVideoServer + local_video_server = None + if settings["local_video_server"]: + local_video_server = actfw_core.LocalVideoServer() + app.register_task(local_video_server)
# Presentation task - pres = Presenter(preview_window, cmd) + pres = Presenter(preview_window, cmd, local_video_server)
class Presenter(Consumer): - def __init__(self, preview_window, cmd): + def __init__(self, preview_window, cmd, local_video_server): super(Presenter, self).__init__() self.preview_window = preview_window self.cmd = cmd + self.local_video_server = local_video_server
def proc(self, rgb_image): self.cmd.update_image(rgb_image) # update `Take Photo` image + if self.local_video_server is not None: + self.local_video_server.update_image(rgb_image) # update local video server image
最終更新日