Skip to main content

triggercam

Tests

Thread-safe webcam capture for Python with on-demand start/stop recording, built on OpenCV.

OpenCVベースの、スレッドセーフなWebカメラキャプチャライブラリです。プレビューを表示し続けたまま、録画の開始・停止を好きなタイミングでトリガーできます。

import time
from triggercam import Camera

with Camera() as cam:
    time.sleep(10)
    cam.start_recording("clip")   # clip.mp4 に書き込み開始
    time.sleep(10)
    cam.stop_recording()          # clip_20260101-120000.mp4 にリネーム

なぜtriggercamなのか

よくある録画系のサンプルは「プログラム起動と同時に録画開始、qキーで終了」という一発勝負の構成がほとんどです。

カメラのプレビューは動かし続けたまま、録画のON/OFFだけを自分のコードから好きなタイミング(センサーのトリガー、スケジュール、ボタン操作、検知イベントなど)で切り替えたい、というケース向けの例はあまり見かけませんでした。

triggercam(本プログラム)では、それができます。

現状、単純な録画ON/OFFのみの機能となっています。 複数カメラ対応・動体検知・NVR的なUIが欲しい場合は、他の本格的なアプリケーションについても検討してください。

インストール

pip install triggercam

PyPIで公開しています。

API

  • Camera(index=0, width=1280, height=720, fps=30, show_preview=True, capture_fourcc="MJPG", output_fourcc="mp4v") — カメラを開き、即座にバックグラウンドのキャプチャスレッドを開始します。capture_fourccはカメラから読み込む際のフォーマット、output_fourccは録画ファイルを書き出す際のコーデックです(どちらも4文字で指定、例: capture_fourcc="YUYV", output_fourcc="H264")。
  • cam.start_recording(filename) — <filename>.mp4への書き込みを開始します。Writerが開けなかった場合(非対応コーデックなど)はRuntimeErrorを送出します。すでに録画中の場合は何もしません。
  • cam.stop_recording() — 録画を停止し、ファイル名を<filename>_<タイムスタンプ>.mp4にリネームします。最終的なパスを返します(録画していなかった場合はNone)。
  • cam.running — キャプチャスレッドが停止するとFalseになります(カメラが切断された場合、プレビューウィンドウでqが押された場合など)。
  • cam.close() — スレッドを停止し、カメラ・Writerのリソースを解放します。プログラムが中断されても録画ファイルが壊れた状態で残らないよう、必ず呼び出してください(with Camera() as cam:を使えば自動的に呼ばれます)。
  • triggercam.presets — 特定機種向けの設定をまとめたモジュール。現状LOGITECH_C270(動作検証済みの機種)のみですが、他機種を使う場合は同じ形のdictを自分で定義してCamera(**your_preset)のように渡せます。Camera自体は特定機種を一切知りません。
from triggercam import Camera
from triggercam.presets import LOGITECH_C270

with Camera(**LOGITECH_C270) as cam:
    ...

一通りの流れと、Ctrl+Cでの安全な終了方法はexamples/basic_recording.pyを参照してください。

動作検証

検証環境(2026-08-21)

項目 内容
OS Windows 11 Pro
Python 3.10.6(プロジェクト専用のvenv)
インストール方法 pip install -e .
依存パッケージ opencv-python 5.0.0.93
カメラ Logi C270 HD WebCam(USB UVCカメラ)

確認できたこと

  • カメラが正しく認識され、プレビューウィンドウに実際の映像が表示されることを確認(起動してからプレビューウィンドウが表示されるまで少し時間がかかる)。
  • start_recording() → stop_recording() の一連の流れが正常に動作し、clip.mp4 が clip_<タイムスタンプ>.mp4 に正しくリネームされることを確認。
  • 録画サイクル(10秒待機→録画→待機→停止)が問題なく動作することを確認。
  • 録画中にCtrl+Cで強制中断した際、そのファイルが正しくstop_recording()まで処理された状態で残ることを確認(未リネームの壊れたファイルが残らない)。
  • 生成された動画ファイルはメディアプレイヤーで正常に再生可能なことを確認。

未検証

  • Linux / macOSでの動作(カメラインデックスでのキャプチャのため動作するはずだが、実機未確認)

ライセンス

MIT — LICENSEを参照してください。

背景

このライブラリは、Qiitaに投稿した元のプログラム ( https://qiita.com/tuo170/items/ca1933a88f3255792214 ) を土台に、バグ修正・API設計・パッケージ化を行って作られています。

実装のコーディングやレビュー、設計の壁打ち相手としてClaude Codeを使用しました。

Metadata

Release files for triggercam 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for triggercam 0.2.0
File Size Uploaded
triggercam-0.2.0.tar.gz 9.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for triggercam 0.2.0
File Interpreter ABI Platform
triggercam-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.3 kB

Release files / triggercam-0.2.0.tar.gz

Download URL triggercam-0.2.0.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
147d2b17c905193f1f9bf36a0a8396e4c8d1ff6d22d27eff33fce92641314d28
BLAKE2b-256 checksum
How to use checksums
25a6c6c486141fb78dcce7f1ea633624b60a68eaca02957dda2fe55b319d44f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.6

Release files / triggercam-0.2.0-py3-none-any.whl

Download URL triggercam-0.2.0-py3-none-any.whl
Size 7.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0567bfb3f9e573c9d3385c5336926177ea7ea7bb0c9712157b70b2bc53efb9e5
BLAKE2b-256 checksum
How to use checksums
c318278e302c47b252a281e76443c8ea5e7f2daa086a61b7f1bac74a68e8d8bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page