V4Lで取得した画像をH.264で送信する

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

../../_images/camera-sample.svg

図 29 カメラからのデータをH.264に変換して送信するための設定例

アップストリームの設定

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

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

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

デバイスコネクターからのデータを受け取るためにデバイスコネクターIPCを追加します。

EDGEPLANT T1など、OpenMAXによるエンコード処理が可能な環境では、以下のコマンドを実行してください(それ以外の環境については下の注釈を参照してください)。

$ intdash-agentctl config device-connector up --create '
    id: camera
    data_name_prefix: v1/101/
    format: iscp-v2-compat
    dest_ids:
      - recoverable
    ipc:
      type: fifo
      path: /var/run/intdash/camera.fifo
    launch:
      cmd: device-connector-intdash
      args:
      - --config
      - /etc/dc_conf/gstreamer_h264.yml
      environment:
      - DC_PROCESS_SRC_CONF_COMMAND="gst-launch-1.0 -q v4l2src device=/dev/video0 ! videorate ! image/jpeg,width=1920,height=1080,framerate=15/1 ! queue ! jpegdec ! omxh264enc control-rate=2 iframeinterval=15 bitrate=3000000 insert-sps-pps=true insert-vui=true ! video/x-h264,stream-format=byte-stream ! queue ! h264parse ! queue ! fdsink fd=1"
      - DC_H264_SPLIT_FILTER_CONF_DELAY_MS=100
      - DC_PRINT_LOG_FILTER_CONF_TAG=camera
      - DC_FILE_SINK_CONF_PATH=/var/run/intdash/camera.fifo
'
  • launch で、device-connector-intdashを起動するように設定しています。

  • device-connector-intdashのパイプライン設定として、付属の /etc/dc_conf/gstreamer_h264.yml を指定しています。 また、パイプライン設定で使用する環境変数を environment で与えています。

    DC_PROCESS_SRC_CONF_COMMAND は、device-connector-intdashのprocess-srcエレメントで実行されるコマンドです。 /dev/video0 からJPEG画像を取得しH.264に変換するGStreamerのコマンドを指定しています。

    注釈

    上の例はOpenMAXによるエンコード処理が可能な環境のための設定です。それ以外の環境では、 DC_PROCESS_SRC_CONF_COMMAND を以下のように設定してください。

    VA-APIによるエンコード処理が可能な環境の場合:

    DC_PROCESS_SRC_CONF_COMMAND="gst-launch-1.0 -q v4l2src device=/dev/video0 ! videorate ! image/jpeg,width=1920,height=1080,framerate=15/1 ! queue ! vaapijpegdec ! queue ! vaapipostproc ! queue ! vaapih264enc rate-control=2 bitrate=3000 max-bframes=0 keyframe-period=15 ! fdsink fd=1"
    

    OpenMAX、VA-APIとも利用できない環境の場合 (GPUを利用しないためCPU処理負荷が高くなります):

    DC_PROCESS_SRC_CONF_COMMAND="gst-launch-1.0 -q v4l2src device=/dev/video0 ! videorate ! image/jpeg,width=1920,height=1080,framerate=15/1 ! queue ! jpegdec ! videoconvert ! queue ! x264enc ! fdsink fd=1"
    
  • device-connector-intdashから /var/run/intdash/camera.fifo を介して得られたデータは、 v1/101/ というデータ名称プリフィックスを与えられて、 recoverable というIDを持つアップストリームに送信されます。

ストリーマーの起動

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

$ intdash-agentctl run

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