Zao SDK / libzao-endpoint API リファレンス 2.0.1.0 (2025-09-01)
Loading...
Searching...
No Matches
ZaoVideoSourceNvComposite の設定ファイルの書式

■ 全般

  • 設定ファイルは TOML 形式で記述します。
  • 設定ファイル内では # 以降はコメントとして扱われます。
  • 設定ファイルは以下の3つのセクションから構成されます。
    • ビデオソース定義テーブル
    • レイアウト定義テーブル
    • 出力定義テーブル

version キー

  • 設定ファイルのバージョンを定義します。
  • 設定出来る値は 2 のみです。

■ ビデオソース定義テーブル

  • ビデオソース定義テーブルは video_source.name で宣言します。
  • nameは各ビデオソースを識別するユニークな名称です。
  • ビデオソース定義テーブルでは以下のキーと値を設定します。
    キー 説明
    type 文字列 ビデオソース種別
    device 文字列 type == "v4l2" の場合のデバイスパス
    pix_fmt 文字列 type == "v4l2" の場合のピクセルフォーマット
    width 整数 キャプチャ解像度幅
    heighht 整数 キャプチャ解像度高さ
    frame_interval 有理数サブテーブル キャプチャ時間間隔

type キー

  • ビデオソースの種別を指定します。
  • 受け入れ可能な文字列は現在 "v4l2" のみです。

device キー

  • type キーが "v4l2" の場合、デバイスノードへのパスを指定します。

pix_fmt キー

  • type キーが "v4l2" の場合、キャプチャ時のピクセルフォーマットを指定します。
  • 対応しているピクセルフォーマットは以下の通りです。
    pix_fmt 説明
    "I420" YUV420 Planer
    "NV12" YUV420 Semi-Planer
    "YUYV" YUV422 Packed
    "YVYU" YUV422 Packed
    "UYVY" YUV422 Packed
    "VYUY" YUV422 Packed

width キー

  • キャプチャ解像度の幅を指定します

height キー

  • キャプチャ解像度の高さを指定します

frame_interval キー

  • 有理数サブテーブルである frame_interval は以下のキーと値を設定します。
キー 値の例 説明
num 整数 キャプチャ時間間隔の分子(省略時 1)
den 整数 キャプチャ時間間隔の分母

■ ビデオソース定義例

[video_source.name]
type = "v4l2"
device = "/dev/video0"
pix_fmt = "YUYV"
width = 1280
height = 720
frame_interval.num = 1
frame_interval.den = 30

■ レイアウト定義テーブル

  • 合成レイアウト定義テーブルは layout.name で宣言します。
  • name はレイアウトを識別するユニークな名称です。
  • レイアウト定義テーブルでは layout.name.composition テーブル配列で合成を定義します。
  • レイアウト定義テーブルでは layout.name.overlay テーブル配列で静止画のアルファ合成を定義することが可能です。
    [layout.name]
    [[layout.name.composition]]
    [[layout.name.overlay]]

layout.name.composition テーブル配列

  • 複数の layout.name.composition を定義することで複数の映像ソースを用いた映像の合成を定義します。
  • layout.name.composition テーブルのキーは以下の通りです。
    キー 説明
    source 文字列 ビデオソース名
    crop 矩形サブテーブル 切り出し矩形
    dest 矩形サブテーブル 合成先矩形
    flip 文字列 回転・反転操作
    filter 文字列 合成時用いるフィルタ処理

source キー

  • video_source で宣言した名前を指定します。

crop キー (省略可)

  • 切り出し矩形を定義するサブテーブルを指定します。
  • crop で指定される矩形は source で指定されたビデオソースの画面範囲内に収まる必要があります。
  • 矩形サブテーブルのキーと値は以下の通りです。
    キー 説明
    left 整数 矩形左上 X 座標
    top 整数 矩形左上 Y 座標
    width 整数 矩形の幅
    height 整数 矩形の高さ

dest キー

  • 合成先の矩形を定義するサブテーブルを指定します。
  • dest で指定する矩形は、後述する output テーブルの画面範囲内に収まる必要があります。

flip キー (省略可)

  • 回転・反転処理を適用します。
  • 省略した場合、"none" が選択されます。
  • 設定可能な値は以下の通りです。
    flip 説明
    "none" 設定なし
    "rotate90" 反時計周りに 90°回転
    "rotate180" 180°回転
    "rotate270 反時計周りに 270°回転
    "horizontal" 左右反転
    "vertical" 上下反転
    "transpose" X/Y 軸の入れ替え
    "inv_transpose" "transpose" + "rotate180"

filter キー (省略可)

  • 合成時に適用されるフィルタを指定します。
  • 省略した場合は "nearest" が選択されます。
  • 設定可能な値は以下の通りです。
    filter 説明
    "nearest" Nearest Neighbor
    "bilinear" Bilinear
    "5tap" VIC 5 tap interpolation
    "10tap" VIC 10 tap interpolation
    "smart" VIC smart interpolation
    "nicest" VIC nicest interpolation

layout.name.composition 設定例

[[layout.name.composition]]
source = "source_name"
crop.left = 0
crop.top = 0
crop.width = 640
crop.height = 360
dest.left = 0
dest.top = 0
dest.width = 960
dest.height = 540
flip = "horizontal"
filter = "bilinear"

layout.name.overlay テーブル配列

  • layout.name.overlay テーブル配列は動画合成後に適用される静止画オーバーレイを定義します。
  • layout.name.overlay テーブルを複数定義する事で複数枚の静止画の合成が可能です。
    キー 説明
    filename 文字列 画像ファイルへのパス
    alpha 浮動小数点数 アルファ値
    dest 矩形サブテーブル 合成先矩形
    filter 文字列 フィルタ種別

filename キー

  • オーバーレイに用いる画像のファイルパスをフルパスで指定します。
  • 対応する画像フォーマットは PNG 形式です。

alpha キー

  • アルファ合成を行う場合のアルファ値です。
  • 省略した場合は 1.0 として扱われます。
  • 値は [0.0, 1.0] の範囲である必要があります。

dest キー

  • 合成先の矩形を定義します。
  • 形式は先述した矩形サブテーブルと同じ形式です。
  • 矩形領域は output テーブルの画面範囲内である必要があります。

filter キー

  • 合成時に使用するフィルタを指定します。
  • 利用できる値は layout.name.compositionfilter キーと同一です。

■ 出力定義テーブル

  • outputテーブルで出力の設定を行います。
キー 説明
layout 文字列 合成に使うレイアウト名
width 整数 出力解像度の幅
height 整数 出力解像度の高さ
frame_interval 有理数サブテーブル 合成処理の実行時間間隔
filter 文字列 出力バッファへの転送時のフィルタ

layout キー

  • レイアウト定義テーブルで指定したレイアウトの名前を指定します。

width キー

  • 出力解像度の幅を指定します。

height キー

  • 出力解像度の高さを指定します。

frame_interval キー

  • 合成処理の実行時間間隔を指定します。
  • ビデオソース定義テーブルの frame_interval と同様、有理数で指定します。

filter キー

  • 合成用のバッファ (RGBAフォーマット) からエンコード用のバッファ (YUV420) に変換する時のフィルタを指定します。
  • 設定できる値は layout.name.compositionfilter と同様です。

■ 設定ファイルの例

# バージョン 2 設定ファイル
version = 2
# front という名前でビデオソースを定義
# V4L2 デバイス /dev/video0 を "YUYV" フォーマットに設定
[video_source.front]
type = "v4l2"
device = "/dev/video0"
pix_fmt = "YUYV"
width = 1920
height = 1080
frame_interval.den = 30
# left という名前でビデオソースを定義
# V4L2 デバイス /dev/video1 を "YUYV" フォーマットに設定
[video_source.left]
type = "v4l2"
device = "/dev/video1"
pix_fmt = "YUYV"
width = 1920
height = 1080
frame_interval.den = 30
# right という名前でビデオソースを定義
[video_source.right]
type = "v4l2"
device = "/dev/video2"
pix_fmt = "YUYV"
width = 1920
height = 1080
frame_interval.den = 30
# default という名前のレイアウトを定義
[layout.default]
# left をソースとして画像左側 400 ピクセル幅を左右反転して合成
[[layout.default.composition]]
source = "left"
crop.top = 0
crop.left = 0
crop.width = 400
crop.height = 1080
dest.top = 0
dest.left = 0
dest.width = 400
dest.height = 1080
flip = "horizontal"
filter = "bilinear"
# front をソースとして画像中央 1120 ピクセル幅を合成
[[layout.default.composition]]
source = "front"
crop.top = 0
crop.left = 400
crop.width = 1120
crop.height = 1080
dest.top = 0
dest.left = 400
dest.width = 1120
dest.height = 1080
filter = "bilinear"
# right をソースとして画像右側 400 ピクセル幅を左右反転合成
[[layout.default.composition]]
source = "right"
crop.top = 0
crop.left = 1520
crop.width = 400
crop.height = 1080
dest.top = 0
dest.left = 1520
dest.width = 400
dest.height = 1080
flip = "horizontal"
filter = "bilinear"
# 出力設定
[output]
layout = "default" # default レイアウトを使用
width = 1920
height = 1080
frame_interval.den = 30
filter = "bilinear"