カメラからV4L2経由で取得したJPEGデータを送信する

付属デバイスコネクターdevice-connector-intdashを使用してカメラからJPEG画像を取得し、リアルタイム送信するための設定例です。

../../_images/jpeg-sample.svg

図 24 JPEG画像を送信するための設定例

アップストリームの設定

以下のコマンドを実行して、 recoverable というIDを持つアップストリームを作成します。 指定しているのはIDのみのため、他の設定値はデフォルトのとおりになります。

$ intdash-agentctl config up --create '
    id: recoverable
  '

デバイスコネクターの設定

intdash Edge Agent 2にデバイスコネクターを追加します。以下のコマンドを実行してください。

$ intdash-agentctl config device-connector up --create '
    id: jpeg
    data_name_prefix: v1/101/
    dest_ids:
      - recoverable
    format: iscp-v2-compat
    ipc:
      type: fifo
      path: /var/run/intdash/jpeg.fifo
    launch:
      cmd: device-connector-intdash
      args:
      - --config
      - /etc/dc_conf/jpeg-up.yml
      environment:
      - DC_V4L2_SRC_CONF_PATH=/dev/video0
      - DC_V4L2_SRC_WIDTH=320
      - DC_V4L2_SRC_HEIGHT=240
      - DC_V4L2_SRC_FPS=5
      - DC_PRINT_LOG_FILTER_CONF_TAG=jpeg
      - DC_FILE_SINK_CONF_PATH=/var/run/intdash/jpeg.fifo
'
  • launch で、device-connector-intdashを起動するように設定しています。

  • device-connector-intdashを実行するための設定は、パイプライン設定ファイル /etc/dc_conf/jpeg-up.yml として与えています(このファイルは次の手順で作成します)。 また、パイプライン設定ファイルで使用するための環境変数を environment で与えています。

  • device-connector-intdashから /var/run/intdash/jpeg.fifo を介して得られたデータは、 v1/101/ というデータ名称プリフィックスを与えられて、 recoverable というIDを持つアップストリームに送信されます。

device-connector-intdashのパイプライン設定

device-connector-intdash用のパイプライン設定ファイルを以下の内容で作成し、 /etc/dc_conf/jpeg-up.yml として保存します。

tasks:
  - id: 1
    element: v4l2-src
    conf:
      path: $(DC_V4L2_SRC_CONF_PATH)
      type: jpeg
      width: $(DC_V4L2_SRC_WIDTH)
      height: $(DC_V4L2_SRC_HEIGHT)
      fps: $(DC_V4L2_SRC_FPS)

  - id: 2
    element: jpeg-split-filter
    from: [ [1] ]

  - id: 3
    element: iscp-v2-compat-filter
    from: [ [2] ]
    conf:
      timestamp:
        stamp:
          clock_id: CLOCK_MONOTONIC
      convert_rule: jpeg

  - id: 4
    element: print-log-filter
    from: [ [3] ]
    conf:
      interval_ms: 10000
      tag: $(DC_PRINT_LOG_FILTER_CONF_TAG)
      output: stderr

  - id: 5
    element: file-sink
    from: [ [4] ]
    conf:
      flush_size: 100
      path: $(DC_FILE_SINK_CONF_PATH)
  • v4l2-srcエレメントでは、環境変数として与えられた値( DC_V4L2_SRC_CONF_PATHDC_V4L2_SRC_WIDTH など)を使って使ってカメラから画像を取得します。(参考: v4l2-src

  • jpeg-split-filterではそれを1フレームごとのJPEGデータに分割します。(参考: jpeg-split-filter

  • iscp-v2-compat-filterではそれをFIFO用データフォーマットに変換するとともに、タイムスタンプを与えます。(参考: iscp-v2-compat-filter

  • print-log-filterでは標準エラー出力にログを出力します。(参考: print-log-filter

  • file-sinkでは、$(DC_FILE_SINK_CONF_PATH)にFIFO用データフォーマットのデータが書き出されます。これをintdash Edge Agent 2が読み取ります。(参考: file-sink

ストリーマーの起動

以上の設定ができたらストリーマーを起動します。

$ intdash-agentctl run

v1互換データとして送っているため、Edge Finderで確認することができます。