Skip to main content

triggercam

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には公開していません。今のところはソースから pip install -e . でインストールしてください)

API

  • Camera(index=0, width=1280, height=720, fps=30, show_preview=True) — カメラを開き、即座にバックグラウンドのキャプチャスレッドを開始します。
  • 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:を使えば自動的に呼ばれます)。

一通りの流れと、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.1.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.1.0
File Size Uploaded
triggercam-0.1.0.tar.gz 6.5 kB Details

Built distribution (wheel)

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

Total release size: 13.1 kB

Release files / triggercam-0.1.0.tar.gz

Download URL triggercam-0.1.0.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
04f514eff54259327cf6a98c5c035aae46f93083cc36b3b80e901a6a0963e814
BLAKE2b-256 checksum
How to use checksums
5bb58083fa69eedad2dac7e12e75fcff88cbaf10ece5a44174ccefb09ac9eceb
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.1.0-py3-none-any.whl

Download URL triggercam-0.1.0-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
752297d5858ec3cdf211d6f1b02fd2d370c486bff28d8966453b0d8b72d16e20
BLAKE2b-256 checksum
How to use checksums
7f09afd788247b2b048f46642ffdc782d74e964ace2ca47f0790e05fb29b58b2
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

0.2.0

2 release files

0.1.1

2 release files

This release

0.1.0 This release

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