英語 | 韓国語 | 中国語 | 日本語

APIs: utils

チャンネルリストを取得

カメラのチャンネルリストを取得します。

🛠️ channels = get_channel_list()

↩️ channels: チャンネル情報を含むオブジェクトの配列。各オブジェクトには次のプロパティが含まれます:

🔹ch_no: チャンネル番号。

🔹title: チャンネルタイトル。

🔹is_connected: カメラが接続されているかどうか。

🔹is_recording: カメラが録画中かどうか。

🔹is_ptz: カメラがPTZ(パン・チルト・ズーム)カメラかどうか。

🔹ptz_presets: PTZプリセットのリストで、「no」はプリセット番号、「title」はプリセットタイトルです。

🔹date_start: 録画開始日(文字列形式 "yyyy-mm-dd")。

🔹date_end: 録画終了日(文字列形式 "yyyy-mm-dd")。

🔹sub_channel_count: サブチャンネルの数。

utils = vmspy.utils()
if not utils.init(address, port, access_id, access_pw):
    print(utils.get_error())

channels = utils.get_channel_list()
for ch in channels:
    print("Ch No:", ch.ch_no)       # 1
    print("Title:", ch.title)       # "Channel Title"
    print("Sub Channels:", ch.sub_channel_count) # 0
    print("Connected:", ch.is_connected) # True/False
    print("Recording:", ch.is_recording) # True/False
    print("Start:", ch.date_start)  # "2025-04-01"
    print("End:", ch.date_end)      # "2025-04-17"
    print("PTZ:", ch.is_ptz)        # True
    for p in ch.ptz_presets:
        print("-Preset No:", p.no)        # 1
        print("-Preset Title:", p.title)  # "Preset#1"

 

グループリスト取得

グループリストとそのメンバーチャンネルを取得します。

🛠️ groups = get_group_list()

↩️ groups: グループ情報を含むオブジェクトの配列。各オブジェクトには次のプロパティが含まれます:

🔹group_idx: グループのインデックス。

🔹title: グループのタイトル。

🔹channels: チャンネル情報を含むオブジェクトの配列。

🔹ch_no: チャンネル番号。

🔹title: チャンネルタイトル。

utils = vmspy.utils()
if not utils.init(address, port, access_id, access_pw):
    print(utils.get_error())

groups = utils.get_group_list()
print(group_list)

for gr in groups:
    print("Group index:", gr.idx)  # 0
    print("Title:", gr.title)     # "Group Title"
    for ch in gr.channels:
        print("- ch no:", ch.ch_no) # 1
        print("- title:", ch.title) # "Channel Title"

 

録画日を取得

指定された月の録画日を取得します。

🛠️ dates = get_recording_dates(year, month)

➡️ year, month: 要求する月を指定します。

↩️ dates: オブジェクトの配列。各オブジェクトには次のものが含まれます:

🔹ch_no: チャンネル番号。

🔹title: チャンネルタイトル。

🔹dates: 録画されている日付の配列、例) ["2026-03-19", "2026-03-20"]。

utils = vmspy.utils()
if not utils.init(address, port, access_id, access_pw):
    print(utils.get_error())

recordingDates = utils.get_recording_dates(2026, 3)
for rcd in recordingDates:
    print("Channel No:", rcd.ch_no)     # 1
    print("Channel Title:", rcd.title)  # "Channel Title"
    for ds in rcd.dates:
        print("- Date:", ds)            # "2026-03-19"

 

録画時間を取得

特定の日付の録画時間を取得します。

🛠️ recording_times = get_recording_times(ch_no, year, month, day, sub_idx=0)

➡️ ch_no: チャンネル番号。

➡️ year, month, day: 要求する録画日を指定します。

➡️ sub_idx: チャンネルサブインデックス。0はメインチャンネル。

↩️ recording_times: オブジェクトの配列。各オブジェクトには次のプロパティが含まれます:

🔹time: ISO-8601フォーマットでの録画開始時間。

🔹timestamp: Unixタイムスタンプとしての録画開始時間。

🔹is_dst: その時刻がサマータイム(DST)かどうかを示します。

🔹duration: 録画時間の秒単位の長さ。

recordingTimes = utils.get_recording_times(1, 2025, 4, 18) # ch#1
for t in recordingTimes:
    print("Time:", t.time)            # 2026-03-20T11:22:45+09:00
    print("Timestamp:", t.timestamp)  # 1773973365
    print("DST:", t.is_dst)           # False
    print("Duration:", t.duration)    # 171

 

アーカイブファイルを取得

アーカイブファイルのリストを取得します。

🛠️ files = get_file_list()

↩️ files: オブジェクトの配列。各オブジェクトには次のプロパティが含まれます:

🔹file_id: ファイルID。

🔹ch_no: チャンネル番号。

🔹title: チャンネルタイトル。

🔹time: ISO 8601形式のファイル開始時間。

🔹timestamp: Unixタイムスタンプとしてのファイル開始時間。

🔹is_dst: その時刻がサマータイム(DST)かどうかを示します。

🔹duration: ファイルの再生時間(秒単位)。

🔹priority: ファイルの優先度(0〜5)。

🔹filesize: ファイルのサイズ。

utils = vmspy.utils()
if not utils.init(address, port, access_id, access_pw):
    print(utils.get_error())

files = utils.get_file_list()
for file in files:
    print("File ID:", file.file_id)     # 29513186
    print("Channel No:", file.ch_no)    # 1
    print("Channel Title:", file.title) # "Channel Title"
    print("Time:", file.time)           # 2026-02-11T15:23:17+09:00
    print("Timestamp:", file.timestamp) # 1770790997
    print("DST:", file.is_dst)          # False
    print("Duration:", file.duration)   # 16
    print("Priority:", file.priority)   # 0
    print("File size:", file.filesize)  # 11408614471

 

イベント取得

特定の日付およびチャンネルのイベントを取得します。

🛠️ events = get_events(ch_no, year, month, day, num_days=1)

➡️ ch_no: チャンネル番号。0に設定すると、すべてのチャンネルのイベントを取得します。

➡️ year, month, day: 要求する日付を指定します。

➡️ num_days: イベントを返す日数を指定します(デフォルト: 1)。

↩️ events: オブジェクトの配列。各オブジェクトには次のプロパティが含まれます:

🔹ch_no: イベントのチャンネル番号。

🔹type: イベントの種類。

🔹time: ISO-8601形式のイベント時間。

🔹timestamp: Unixタイムスタンプとしてのイベント時間。

🔹is_dst: その時刻がサマータイム(DST)かどうかを示します。

🔹duration: イベントの持続時間(秒単位)。

utils = vmspy.utils()
if not utils.init(address, port, access_id, access_pw):
    print(utils.get_error())

events = utils.get_events(0, 2025, 4, 18, num_days=5) # すべてのチャンネルに対して5日間のイベントを取得
for e in events:
    print("Channel No:", e.ch_no)     # 1
    print("Event Type:", e.type)      # "MOTION"
    print("Time:", e.time)            # 2026-03-20T11:22:45+09:00
    print("Timestamp:", e.timestamp)  # 1773973365
    print("DST:", e.is_dst)           # False
    print("Duration:", e.duration)    # 11

 

PTZプリセット位置に移動

PTZカメラを指定されたプリセット位置に移動させます。

🛠️ ptz_preset_go(ch_no, preset_no)

➡️ ch_no: チャンネル番号。

➡️ preset_no: カメラを移動させるプリセット番号。

if not utils.ptz_preset_go(1, 3):
    print(utils.get_error())

 

PTZプリセット位置を取得

現在のPTZカメラのプリセット位置を取得します。

🛠️ preset = get_ptz_preset(ch_no)

➡️ ch_no: チャンネル番号。

↩️ preset: チャンネルにプリセット位置が設定されていない場合は `None` を返します。設定されている場合は次のプロパティを持つオブジェクトを返します:

🔹no: プリセット番号。

🔹title: プリセットタイトル。

p = utils.get_ptz_preset(1)
if p == None:
    print("No prest position is set")
else:
    print(f"Preset position #{p.no}.{p.title} is set")

 

VMSサーバーでライブチャンネルを表示

チャンネルのライブビデオ映像をVMSサーバーで表示します。

🛠️ show_live(ch_no, sub_idx=0)

➡️ ch_no: チャンネル番号。

➡️ sub_idx: チャンネルサブインデックス。0はメインチャンネル。

if not utils.show_live(1):
    print(utils.get_error())

 

VMSサーバーでの再生チャンネルを表示

指定された時間にチャンネルの再生ビデオ映像をVMSサーバーで表示します。

🛠️ show_playback(ch_no, year, month, day, hour, minute, second, sub_idx=0)

➡️ ch_no: チャンネル番号。

➡️ year, month, day: 再生日を指定します。

➡️ hour, minute, second: 再生時間を指定します。

➡️ sub_idx: チャンネルサブインデックス。0はメインチャンネル。

if not utils.show_playback(1, 2025, 4, 18, 14, 30, 0):
    print(utils.get_error())

 

VMSサーバーでグループのライブ表示

グループのライブビデオ映像をVMSサーバーで表示します。

🛠️ show_group_live(group_idx)

➡️ group_idx: グループのインデックス。

# VMSで最初のグループ(group_idx=0)を表示
if not utils.show_group_live(0):
    print(utils.get_error())

 

VMSサーバーでグループの再生表示

指定された時間にグループの再生ビデオ映像をVMSサーバーで表示します。

🛠️ show_group_playback(group_idx, year, month, day, hour, minute, second)

➡️ group_idx: グループのインデックス。

➡️ year, month, day: 再生日を指定します。

➡️ hour, minute, second: 再生時間を指定します。

# VMSで2025-04-18 14:30:00に最初のグループ(group_idx=0)を表示
if not utils.show_group_playback(0, 2025, 4, 18, 14, 30, 0):
    print(utils.get_error())

 

VMSサーバーでアーカイブファイルの再生を表示

指定されたアーカイブファイルをVMSサーバーで再生表示します。

🛠️ show_file_playback(file_id, timestamp)

➡️ file_id: ファイルIDを指定します。

➡️ timestamp: Unixタイムスタンプで再生時間を指定します。

# アーカイブファイル(file_id=29513186)をUnixタイムスタンプ1770790997で表示
if not utils.show_file_playback(29513186, 1770790997):
    print(utils.get_error())