Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/ssrajadh/sentrysearch
OSINT (खुला स्रोत खुफिया)टोहीफोरेंसिकजानकारी एकत्र करनाडिजिटल फोरेंसिकमशीन लर्निंग
GitHubssrajadh/sentrysearch

sentrysearch

Gemini Embedding 2 या Qwen3-VL का उपयोग करके वीडियो पर सिमैंटिक खोज।

रिपॉजिटरी देखें
4.4k421717 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

SentrySearch

वीडियो फुटेज पर सिमैंटिक खोज। आप जो खोज रहे हैं वह टाइप करें, और एक ट्रिम किया हुआ क्लिप वापस पाएं।

[!IMPORTANT] आधिकारिक स्रोत: github.com/ssrajadh/sentrysearch SentrySearch का एकमात्र आधिकारिक घर है। अन्य साइटें जो इस प्रोजेक्ट को पुनः प्रकाशित या मिरर कर रही हैं, वे मेंटेनर से संबद्ध या समर्थित नहीं हैं, हमेशा इस रिपॉजिटरी से डाउनलोड करें।

भाषाएँ: अंग्रेज़ी · 简体中文

नया: SentrySearch कोडबेस वॉकथ्रू वीडियो

पाइपलाइन:

  1. SentrySearch (अपने फुटेज में एक घटना खोजें)
  2. SentryMerge (मल्टी-कैम फुटेज को स्वचालित रूप से एक वीडियो में काटें जो कैमरों में विषय का अनुसरण करता है)
  3. SentryBlur (संवेदनशील जानकारी को स्वचालित रूप से रिडैक्ट करें)

विषय सूची

  • यह कैसे काम करता है
  • आरंभ करना
  • उपयोग
    • आरंभ
    • फुटेज इंडेक्स करें
    • खोज
    • छवि द्वारा खोज
    • हाइलाइट्स
    • Qwen क्लाउड (Alibaba DashScope)
    • स्थानीय बैकएंड (कोई API कुंजी आवश्यक नहीं)
    • स्थानीय मॉडल तेज़ क्यों है
    • Tesla मेटाडेटा ओवरले
    • SentryMerge के साथ स्टिच करें
    • SentryBlur के साथ रिडैक्ट करें
    • इंडेक्स प्रबंधन
      • असफल चंक और पुनः प्रयास
      • कैश और स्थिति फ़ाइलें
    • वर्बोज़ मोड
  • यह कैसे संभव है?
  • लागत
  • ज्ञात चेतावनियाँ (हानिरहित)
  • सीमाएँ और भविष्य का कार्य
  • संगतता
  • आवश्यकताएँ

यह कैसे काम करता है

SentrySearch आपके वीडियो को ओवरलैपिंग चंक में विभाजित करता है, Google के Gemini Embedding API, Alibaba DashScope (qwen-cloud), या एक स्थानीय Qwen3-VL मॉडल का उपयोग करके प्रत्येक चंक को वीडियो के रूप में एम्बेड करता है, और वेक्टर को एक स्थानीय ChromaDB डेटाबेस में संगृहीत करता है। जब आप खोज करते हैं, तो आपकी टेक्स्ट क्वेरी (या छवि, छवि द्वारा खोज देखें) को उसी वेक्टर स्पेस में एम्बेड किया जाता है और संगृहीत वीडियो एम्बेडिंग से मिलान किया जाता है। शीर्ष मिलान को स्वचालित रूप से मूल फ़ाइल से काटकर एक क्लिप के रूप में सहेजा जाता है।

आरंभ करना

  1. uv इंस्टॉल करें (यदि आपके पास नहीं है):

macOS/Linux:```bash curl -LsSf https://astral.sh/uv/install.sh | sh

root@kitploit:~
**विंडोज़:**```powershell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. क्लोन करें और इंस्टॉल करें:```bash git clone https://github.com/ssrajadh/sentrysearch.git cd sentrysearch uv tool install .
root@kitploit:~
> **Python 3.11 या 3.12 की आवश्यकता है** (PyTorch व्हील्स अभी तक 3.13+ का समर्थन नहीं करते)। यदि आपका डिफ़ॉल्ट Python नया है, तो एक प्रबंधित 3.12 स्थापित करें और टूल इंस्टॉलेशन को पिन करें:
> ```bash
> uv python install 3.12
> uv tool install --python 3.12 .
> ```

3. अपना API कुंजी सेट करें (या [इसके बजाय स्थानीय मॉडल का उपयोग करें](#local-backend-no-api-key-needed)) — **केवल डिफ़ॉल्ट Gemini बैकएंड के लिए आवश्यक**; यदि आप `--backend local` या `DASHSCOPE_API_KEY` के साथ `--backend qwen-cloud` का उपयोग करते हैं तो इसे छोड़ें (`.env` में)।```bash
sentrysearch init

यह आपकी Gemini API कुंजी माँगता है, उसे .env में लिखता है, और एक परीक्षण embedding के साथ सत्यापित करता है।

  1. अपने फुटेज को अनुक्रमित करें:```bash sentrysearch index /path/to/footage
root@kitploit:~
5. खोज:```bash
sentrysearch search "red truck running a stop sign"

ffmpeg वीडियो चंकिंग और ट्रिमिंग के लिए आवश्यक है। यदि आपके पास सिस्टम-वाइड यह नहीं है, तो बंडल किया गया imageio-ffmpeg स्वचालित रूप से उपयोग किया जाता है।

मैन्युअल सेटअप: यदि आप sentrysearch init का उपयोग नहीं करना चाहते हैं, तो आप .env.example को .env पर कॉपी कर सकते हैं और aistudio.google.com/apikey से अपनी कुंजी मैन्युअल रूप से जोड़ सकते हैं।

उपयोग

Init```bash

$ sentrysearch init Enter your Gemini API key (get one at https://aistudio.google.com/apikey): **** Validating API key... Setup complete. You're ready to go — run sentrysearch index <directory> to get started.

root@kitploit:~
यदि कोई कुंजी पहले से कॉन्फ़िगर की गई है, तो आपसे पूछा जाएगा कि क्या उसे ओवरराइट करना है।

> **सुझाव:** आकस्मिक अधिक खर्च को रोकने के लिए [aistudio.google.com/billing](https://aistudio.google.com/billing) पर खर्च की सीमा निर्धारित करें।

### फुटेज अनुक्रमणिका```bash
$ sentrysearch index /path/to/video/footage
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 1/4]
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 2/4]
...
Indexed 12 new chunks from 3 files. Total: 12 chunks from 3 files.

खोज

Options:

  • --chunk-duration 30 — प्रति चंक सेकंड
  • --overlap 5 — चंकों के बीच ओवरलैप
  • --no-preprocess — डाउनस्केलिंग/फ्रेम दर कमी को छोड़ें (कच्चे चंक भेजें)
  • --target-resolution 480 — प्रीप्रोसेसिंग के लिए पिक्सेल में लक्ष्य ऊँचाई
  • --target-fps 5 — प्रीप्रोसेसिंग के लिए लक्ष्य फ्रेम दर
  • --no-skip-still — सभी चंक शामिल करें, यहाँ तक कि जिनमें कोई दृश्य परिवर्तन न हो
  • --backend local — Gemini के बजाय स्थानीय मॉडल का उपयोग करें (विवरण नीचे)```bash $ sentrysearch search "red truck running a stop sign" #1 [0.87] front_2024-01-15_14-30.mp4 @ 02:15-02:45 #2 [0.74] left_2024-01-15_14-30.mp4 @ 02:10-02:40 #3 [0.61] front_2024-01-20_09-15.mp4 @ 00:30-01:00

Saved clip: ./match_front_2024-01-15_14-30_02m15s-02m45s.mp4

root@kitploit:~
यदि सर्वोत्तम परिणाम का समानता स्कोर आत्मविश्वास सीमा (डिफ़ॉल्ट 0.41) से कम है, तो आपको ट्रिमिंग से पहले संकेत दिया जाएगा:```
No confident match found (best score: 0.28). Show results anyway? [y/N]:

With --no-trim, कम-विश्वास वाले परिणाम एक प्रॉम्प्ट के बजाय एक नोट के साथ दिखाए जाते हैं।

विकल्प: --results N, --output-dir DIR, --no-trim ऑटो-ट्रिमिंग को छोड़ने के लिए, --threshold 0.5 विश्वास सीमा (confidence cutoff) को समायोजित करने के लिए, --save-top N सर्वोत्तम मिलान के बजाय शीर्ष N क्लिप को सहेजने के लिए, --dedupe उन परिणामों को हटाने के लिए जो उच्च-रैंक वाले चयन से बहुत अधिक समान हैं (एक ही घटना के लगभग-डुप्लिकेट टुकड़ों को सूची में भरने से रोकता है), और --rerank VLM से वापस आए उम्मीदवारों को ट्रिमिंग से पहले पुनः-रैंक करने के लिए कहने के लिए। बैकएंड और मॉडल इंडेक्स से स्वचालित रूप से पता लगाए जाते हैं — केवल ओवरराइड करने के लिए --backend या --model पास करें।```bash

Save top 5 clips, dropping near-duplicates

sentrysearch search "red truck" --save-top 5 --dedupe 0.9

Re-rank the top 10 embedding matches with a VLM before trimming

sentrysearch search "pedestrian crossing behind the car" --rerank --results 10

root@kitploit:~
The `--dedupe` मान एक कोसाइन समानता सीमा (0–1) है। कोई भी परिणाम जिसकी समानता पहले से रखे गए उच्च-रैंक वाले परिणाम से इस मान से अधिक होती है, उसे हटा दिया जाता है। कम मान अधिक सख्त होते हैं: `0.8` के लिए परिणामों को बहुत अलग होना आवश्यक है, `0.95` केवल लगभग समान अंशों को हटाता है। `0.9` एक अच्छा डिफ़ॉल्ट है।

`--rerank` प्रत्येक लौटाए गए उम्मीदवार क्लिप को निकालता है, इसे क्वेरी के साथ एक VLM को भेजता है, और संभावित दृश्य मैचों को एम्बेडिंग-केवल परिणामों से आगे क्रमबद्ध करता है। Gemini और qwen-cloud खोजें पुनर्क्रमण के लिए Gemini 2.5 Flash का उपयोग करती हैं; स्थानीय खोजें एक स्थानीय Qwen3-VL Instruct पुनर्क्रमक का उपयोग करती हैं। यदि पुनर्क्रमण नहीं चल सकता या किसी उम्मीदवार को स्कोर नहीं किया जा सकता, तो SentrySearch खोज को विफल करने के बजाय एम्बेडिंग-रैंक वाले परिणामों को रखता है।

### छवि द्वारा खोजें

क्वेरी के रूप में एक संदर्भ छवि का उपयोग करें — 'ऐसे क्लिप खोजें जो इस तरह दिखते हैं' जब दृश्य को शब्दों में वर्णित करना अजीब हो (एक विशिष्ट कार का स्क्रीनशॉट, किसी अन्य वीडियो का संदर्भ फ्रेम, आदि) के लिए उपयोगी।```bash
$ sentrysearch img ~/Downloads/image.jpg
  #1 [0.72] 2026-03-12_10-44-17-left_repeater.mp4 @ 00:00-00:30
  #2 [0.69] 2026-03-12_10-44-17-left_repeater.mp4 @ 00:25-00:55
  #3 [0.67] 2026-02-12_20-02-15-front.mp4 @ 00:00-00:18

Saved clip: ./match_2026-03-12_10-44-17-left_repeater_00m00s-00m30s.mp4

छवि को अनुक्रमित वीडियो खंडों के समान सदिश स्थान में एम्बेड किया जाता है और कोसाइन समानता द्वारा रैंक किया जाता है। छवि खोज --results, --threshold, --save-top, --dedupe, --overlay, --no-trim, --backend, और --model को सपोर्ट करती है।

समर्थित प्रारूप: Gemini बैकएंड पर JPG, PNG, WEBP, GIF, HEIC/HEIF; स्थानीय बैकएंड इसके अतिरिक्त PIL जो भी डीकोड कर सकता है (BMP, TIFF, आदि) स्वीकार करता है।

नोट: छवि खोज दृश्य रूप से समान मैच लौटाती है, जरूरी नहीं कि एक ही वस्तु। लाल सेडान क्वेरी समान आकार के अन्य लाल सेडान को सतह पर ला सकती है — उम्मीदों को तदनुसार समायोजित करें।

मुख्य आकर्षण

पता नहीं क्या खोजें? sentrysearch highlights आपके इंडेक्स में सबसे असामान्य क्लिप्स को रैंक करता है — ऐसे चंक जिनके एम्बेडिंग्स बाकी सब से दूर बैठते हैं — और उन्हें स्वचालित रूप से ट्रिम करता है। ताजा फुटेज के डंप को स्किम करने के लिए अच्छा है।```bash $ sentrysearch highlights -n 3 #1 [0.165] 2026-02-12_20-02-15-back.mp4 @ 00:00-00:18 #2 [0.163] 2026-02-12_20-02-15-right_repeater.mp4 @ 00:00-00:18 #3 [0.149] 2026-02-12_20-02-15-front.mp4 @ 00:00-00:18 ...

root@kitploit:~
स्कोरिंग विधियाँ (`--method`):

- **`knn`** (डिफ़ॉल्ट) — किसी चंक के *k* निकटतम पड़ोसियों की औसत कोसाइन दूरी। मजबूत; उन क्लिप्स को उजागर करता है जिनके लगभग कोई जुड़वा नहीं हैं।
- **`centroid`** — इंडेक्स माध्य से दूरी। सबसे सस्ता, जो भी कम प्रतिनिधित्व में है उसकी ओर पक्षपाती।
- **`lof`** — स्थानीय आउटलायर फैक्टर (Local Outlier Factor)। तब सर्वोत्तम जब इंडेक्स में कई अलग "सामान्य" मोड हों (दिन बनाम रात बनाम गैरेज)।

परिष्करण विकल्प:

- `--against "<query>"` — किसी क्वेरी के *सापेक्ष* विसंगति स्कोर करें। `--against-mode within` (डिफ़ॉल्ट) के साथ, क्वेरी के शीर्ष मैचों में से विसंगतियों को रैंक करता है ("पैदल चलने वालों की क्लिप में अजीब पैदल चलने वाले")। `--against-mode global` के साथ, ऐसी क्लिप ढूँढता है जो क्वेरी से मेल खाती हैं *लेकिन* बाकी इंडेक्स से भिन्न हैं ("इस प्रकार की दुर्लभ घटनाएँ")।
- `--dedupe 0.9` — उन परिणामों को हटाएँ जो उच्च-रैंक वाले पिक के समान हैं (डिफ़ॉल्ट 0.9 कोसाइन समानता)। सूची को निकट-डुप्लिकेट फ्रेम से भरने से रोकता है।
- `--exclude-baseline` — स्कोरिंग से पहले इंडेक्स के आधे भाग को जो सेंट्रॉइड के निकटतम है, हटा दें। उपयोगी जब इंडेक्स में दोहरावदार "उबाऊ" फुटेज का वर्चस्व हो।
- `-k, --neighbors 10` — `knn`/`lof` के लिए *k*।
- `--no-trim` — क्लिप लिखे बिना रैंकिंग प्रिंट करें।

> **सावधानी:** सांख्यिकीय रूप से विसंगति का अर्थ दिलचस्प होना नहीं है। सेंसर गड़बड़ियाँ, लेंस फ्लेयर, अधिकतर दिन के इंडेक्स में रात के फ्रेम, और अकेली गैरेज क्लिप सभी उच्च रैंक करते हैं। शोर को छानने के लिए `--exclude-baseline` और `--dedupe` का उपयोग करें, या विषय द्वारा सीमित करने के लिए `--against` का उपयोग करें।

### Qwen क्लाउड (Alibaba DashScope)

[DashScope](https://www.alibabacloud.com/help/en/model-studio/qwen-api-via-dashscope) / मॉडल स्टूडियो मल्टीमॉडल एम्बेडिंग के लिए वैकल्पिक **qwen-cloud** बैकएंड का उपयोग करें (डिफ़ॉल्ट मॉडल `qwen3-vl-embedding`, `--dashscope-model` या `DASHSCOPE_EMBEDDING_MODEL` के साथ ओवरराइड करने योग्य):```bash
uv tool install ".[qwen-cloud]"
export DASHSCOPE_API_KEY=...
sentrysearch index /path/to/footage --backend qwen-cloud
sentrysearch search "your query" --backend qwen-cloud

वीडियो अपलोड: स्थानीय चंक फ़ाइलें DashScope-प्रबंधित अस्थायी OSS में आधिकारिक Python SDK द्वारा API द्वारा उपभोग करने से पहले भेजी जाती हैं (HTTP API एक URL की अपेक्षा करता है; SDK आपके लिए अपलोड संभालता है)।

स्थानीय बैकएंड (कोई API कुंजी आवश्यक नहीं)

Gemini API के बजाय स्थानीय Qwen3-VL-Embedding मॉडल का उपयोग करके इंडेक्स और खोजें। मुफ़्त, निजी, और पूरी तरह से आपकी मशीन पर चलता है। सर्वोत्तम खोज गुणवत्ता के लिए, Gemini बैकएंड का उपयोग करें — स्थानीय 8B मॉडल एक ठोस विकल्प है जब आपको ऑफ़लाइन/निजी खोज की आवश्यकता होती है, और 2B मॉडल एक फ़ॉलबैक है जब हार्डवेयर 8B का समर्थन नहीं कर सकता।

मॉडल आपके हार्डवेयर से स्वतः पता लगाया जाता है — NVIDIA GPUs और 24 GB+ RAM वाले Macs के लिए qwen8b, छोटे Macs और केवल CPU सिस्टम के लिए qwen2b। आप --model qwen2b या --model qwen8b से ओवरराइड कर सकते हैं। अपने हार्डवेयर के आधार पर एक इंस्टॉल चुनें:

अच्छी तरह से काम नहीं करेगा: Intel Macs और समर्पित GPU के बिना मशीनें। ये float32 के साथ CPU पर वापस आ जाते हैं — व्यावहारिक उपयोग के लिए बहुत धीमा और मेमोरी-भूखा। इसके बजाय Gemini API बैकएंड (डिफ़ॉल्ट) का उपयोग करें।

निश्चित नहीं हैं? Mac पर, ".[local]" का उपयोग करें। NVIDIA पर, ".[local-quantized]" का उपयोग करें — 4-बिट क्वांटाइज़ेशन न्यूनतम गुणवत्ता हानि के साथ NVIDIA हार्डवेयर की सबसे व्यापक श्रेणी पर काम करता है। (bitsandbytes को CUDA की आवश्यकता है और Mac/MPS पर काम नहीं करता है।)

Python संस्करण: PyTorch व्हील्स नए Python रिलीज़ से पीछे रह जाते हैं, इसलिए स्थानीय बैकएंड को Python 3.11 या 3.12 की आवश्यकता है। यदि आपका डिफ़ॉल्ट Python 3.13+ है, तो एक प्रबंधित 3.12 इंस्टॉल करें और टूल इंस्टॉल को उस पर पिन करें:```bash uv python install 3.12 uv tool install --python 3.12 ".[local]"

root@kitploit:~
**Mac पूर्वापेक्षा:** सिस्टम FFmpeg स्थापित करें (स्थानीय मॉडल का वीडियो प्रोसेसर इसकी आवश्यकता है — Gemini बैकएंड इसके बजाय एक बंडल किया हुआ ffmpeg का उपयोग करता है):```bash
brew install ffmpeg

--backend local के साथ इंडेक्स करें और खोजें — किसी अतिरिक्त फ्लैग की आवश्यकता नहीं:```bash sentrysearch index /path/to/footage --backend local sentrysearch search "car running a red light"

root@kitploit:~
सर्च कमांड उस बैकएंड और मॉडल को स्वतः पहचान लेता है जिसके साथ आपने इंडेक्स किया था। आप शॉर्टहैंड के रूप में `--model` का भी उपयोग कर सकते हैं — इसका मतलब `--backend local` होता है:```bash
sentrysearch index /path/to/footage --model qwen2b   # same as --backend local --model qwen2b
sentrysearch search "car running a red light"          # auto-detects local/qwen2b from index

विकल्प:

  • --model qwen2b — छोटा मॉडल, कम गुणवत्ता लेकिन केवल ~6 GB मेमोरी (पूर्ण HuggingFace ID भी स्वीकार करता है)
  • --quantize / --no-quantize — 4-बिट क्वांटिज़ेशन को चालू या बंद करें (डिफ़ॉल्ट: bitsandbytes स्थापित है या नहीं के आधार पर स्वतः पहचान)

नोट्स:

  • पहली बार चलाने पर मॉडल डाउनलोड होता है (~16 GB 8B के लिए, ~4 GB 2B के लिए)।
  • स्थानीय --rerank एम्बेडिंग मॉडल के अतिरिक्त एक अलग Qwen3-VL Instruct मॉडल (Qwen/Qwen3-VL-8B-Instruct या Qwen/Qwen3-VL-2B-Instruct) डाउनलोड करता है।
  • विभिन्न बैकएंड और मॉडलों से एम्बेडिंग संगत नहीं हैं। प्रत्येक बैकएंड/मॉडल संयोजन को अपना अलग इंडेक्स मिलता है, इसलिए वे गलती से मिक्स नहीं हो सकते। यदि आप ऐसे मॉडल के साथ खोज करते हैं जिसमें कोई इंडेक्स डेटा नहीं है, तो आपको बताया जाएगा कि वास्तव में किस मॉडल का उपयोग किया गया।
  • गति GPU कोर की संख्या के अनुसार भिन्न होती है — बेस M-सीरीज़ चिप्स Pro/Max से धीमी होती हैं लेकिन समान परिणाम उत्पन्न करती हैं।

स्थानीय मॉडल तेज़ क्यों है

स्थानीय बैकएंड कुछ तकनीकों के माध्यम से तेज़ और मेमोरी-कुशल बना रहता है जो एक दूसरे को बढ़ाती हैं:

  • प्रीप्रोसेसिंग चंक्स को मॉडल में जाने से पहले छोटा कर देती है। प्रत्येक 30 सेकंड के चंक को एम्बेडिंग से पहले ffmpeg के माध्यम से 480p पर 5fps पर डाउनस्केल किया जाता है। ~19 MB का डैशकैम चंक ~1 MB हो जाता है — मॉडल को प्रोसेस करने वाले पिक्सल में 95% की कमी। मॉडल इनफरेंस का समय पिक्सल की संख्या के अनुसार बढ़ता है, वीडियो अवधि के अनुसार नहीं, इसलिए यह सबसे बड़ा स्पीडअप है।
  • कम फ्रेम सैंपलिंग। वीडियो प्रोसेसर प्रति चंक मॉडल को अधिकतम 32 फ्रेम भेजता है (fps=1.0, max_frames=32)। 30 सेकंड का चंक ~30 फ्रेम उत्पन्न करता है — सैकड़ों नहीं।
  • MRL आयाम ट्रंकेशन। Qwen3-VL-Embedding Matryoshka Representation Learning का समर्थन करता है। प्रत्येक एम्बेडिंग के केवल पहले 768 आयाम रखे जाते हैं और L2-नॉर्मलाइज़ किए जाते हैं, जिससे ChromaDB में स्टोरेज और दूरी गणना कम हो जाती है।
  • ऑटो-क्वांटिज़ेशन। सीमित VRAM वाले NVIDIA GPUs पर, 8B मॉडल स्वचालित रूप से 4-बिट (bitsandbytes) में लोड होता है — ~18 GB से ~6-8 GB तक कम हो जाता है, न्यूनतम गुणवत्ता हानि के साथ। 4090 (24 GB) पूर्ण bf16 मॉडल को बाकी जगह के साथ चलाता है।
  • स्थिर-फ्रेम स्किपिंग। बिना किसी सार्थक दृश्य परिवर्तन वाले चंक्स (जैसे पार्क की गई कार) का पता सैंपल किए गए फ्रेमों में JPEG फ़ाइल आकारों की तुलना करके लगाया जाता है और पूरी तरह से छोड़ दिया जाता है — प्रति चंक एक पूर्ण फॉरवर्ड पास बचाता है।

इन सबके साथ, A100 पर प्रति चंक ~2-5 सेकंड और T4 पर ~3-8 सेकंड की उम्मीद करें। 4090 पर, bf16 में 8B मॉडल प्रति चंक कम एकल अंकों में होना चाहिए।

टेस्ला मेटाडेटा ओवरले

ट्रिम किए गए क्लिप्स पर गति, स्थान और समय बर्न करें:```bash sentrysearch search "car cutting me off" --overlay

root@kitploit:~
यह टेस्ला डैशकैम फ़ाइलों (स्पीड, GPS) में एम्बेडेड टेलीमेट्री को निकालता है और एक HUD ओवरले प्रस्तुत करता है। ओवरले दिखाता है:

- **शीर्ष केंद्र:** हल्के भूरे कार्ड पर गति और MPH लेबल
- **कार्ड के नीचे:** दिनांक और समय (AM/PM के साथ 12-घंटे)
- **शीर्ष बाएँ:** शहर और सड़क का नाम (रिवर्स जियोकोडिंग द्वारा)

![tesla overlay](https://assets.kitploit.com/production/public/readmes/12784/6bacffb39f1503cd7f92f2326d60919b14d1bfcd6ee9b8244a9d1bfb4b26e58e.png)

आवश्यकताएँ:

- टेस्ला फर्मवेयर 2025.44.25 या बाद का, HW3+
- SEI मेटाडेटा केवल ड्राइविंग फुटेज में मौजूद है (पार्क किए गए/सेंट्री मोड में नहीं)
- रिवर्स जियोकोडिंग geopy के माध्यम से [OpenStreetMap's Nominatim API](https://nominatim.openstreetmap.org/) का उपयोग करता है (वैकल्पिक)

Tesla ओवरले समर्थन के साथ इंस्टॉल करें:```bash
uv tool install ".[tesla]"

geopy के बिना, ओवरले अभी भी काम करता है लेकिन शहर/सड़क का नाम छोड़ देता है।

स्रोत: teslamotors/dashcam

SentryMerge के साथ स्टिच करें

SentryMerge एक सह-उपकरण है जो एक SentrySearch परिणाम से एक घटना का एकल क्रॉस-कैमरा वीडियो स्वचालित रूप से काटता है। हर बार जब sentrysearch search चलता है, यह परिणाम सूची को ~/.sentrysearch/last_search.json में कैश करता है; SentryMerge उसे --last के माध्यम से लेता है, सर्वश्रेष्ठ मल्टी-कैमरा क्लिप-सेट चुनता है, एक VLM से प्रति कैमरा उप-सेकंड दृश्यता सीमाएँ पूछता है, और एक फ्रेम-सटीक वीडियो स्टिच करता है जो विषय को कैमरों में अनुसरण करता है:```bash sentrysearch search "" sentrymerge --last # → merge.mp4

root@kitploit:~
`--last` खोज को पुनः चलाए बिना काम करता है; `sentrymerge --query "..."` पर्दे के पीछे खोज को पुनः चलाता है। स्थापना निर्देशों, VLM बैकएंड विकल्पों (Gemini / OpenAI / local Qwen), और गैर-टेस्ला डैशकैम के लिए मॉड्यूलर कैम-कॉन्फ़िग सिस्टम के लिए [SentryMerge README](https://github.com/ssrajadh/sentrymerge#readme) देखें।

### SentryBlur से संपादित करें

[SentryBlur](https://github.com/ssrajadh/sentryblur) वीडियो के स्थानीय चेहरे, लाइसेंस प्लेट और प्राकृतिक-भाषा संपादन के लिए एक सहायक उपकरण है। हर बार जब `sentrysearch search` एक क्लिप सहेजता है, तो वह पथ को `~/.sentrysearch/last_clip.json` में कैश करता है; SentryBlur `--last` के माध्यम से इसे उठाता है, इसलिए खोज-फिर-संपादन दो कमांड है और कोई पथ-पासिंग नहीं:```bash
sentrysearch search "car cuts me off"
sentryblur prompt --last "road signs"   # → match_<...>_blurred.mp4

sentryblur faces --last और sentryblur plates --last उसी तरह काम करते हैं. तेज़ CPU डिटेक्टरों के लिए faces या plates चुनें; मनमानी वस्तुओं (फ़ोन स्क्रीन, मॉनिटर, नाम टैग) के लिए prompt "<text>" का उपयोग करें — prompt के लिए NVIDIA GPU या Apple Silicon की आवश्यकता है. स्थापना निर्देशों और हार्डवेयर नोट्स के लिए SentryBlur README देखें.

इंडेक्स का प्रबंधन```bash

Show index info (files marked [missing] no longer exist on disk)

sentrysearch stats

Remove specific files by path substring

sentrysearch remove path/to/footage

Wipe the entire index

sentrysearch reset

root@kitploit:~
#### विफल चंक्स और पुनः प्रयास

यदि एक चंक पुनः प्रयास के बाद एम्बेड नहीं किया जा सकता है, तो SentrySearch इसे `~/.sentrysearch/dlq.json` पर एक डेड-लेटर क्यू (DLQ) में रिकॉर्ड करता है और आपके फुटेज के बाकी हिस्से को इंडेक्स करना जारी रखता है। चंक आमतौर पर वहां बार-बार क्षणिक API/बैकएंड विफलताओं, एक विशिष्ट फ़ाइल के लिए डिकोडर त्रुटियों, लापता फ़ाइलों, या मेमोरी-आउट त्रुटियों के कारण पहुंचते हैं। स्थायी दिखने वाली विफलताएं जैसे कि लापता फ़ाइलें, डिकोड त्रुटियां, और OOM तुरंत रिकॉर्ड की जाती हैं क्योंकि समान सेटिंग्स के साथ उसी चंक को पुनः प्रयास करना सहायक होने की संभावना नहीं है।

विफल चंक्स का निरीक्षण करें:```bash
sentrysearch dlq list

अगले index run पर उन्हें पुनः प्रयास करें:```bash sentrysearch index /path/to/footage --retry-failed

root@kitploit:~
DLQ को बिना पुनः प्रयास किए साफ़ करें:```bash
sentrysearch dlq clear

डिफ़ॉल्ट रूप से, भविष्य के sentrysearch index रन DLQ में पहले से मौजूद चंक्स को छोड़ देंगे ताकि आप बार-बार विफलताओं के लिए भुगतान या प्रतीक्षा न करें। स्रोत समस्या को ठीक करने, मॉडल/बैकएंड सेटिंग्स बदलने या मेमोरी खाली करने के बाद --retry-failed का उपयोग करें।

कैश और स्टेट फ़ाइलें

SentrySearch ~/.sentrysearch/ के अंतर्गत स्थानीय स्थिति रखता है:

वर्बोज़ मोड

डीबग जानकारी (एम्बेडिंग आयाम, API प्रतिक्रिया समय, समानता स्कोर) के लिए किसी भी कमांड में --verbose जोड़ें।

यह कैसे संभव है?

Gemini Embedding 2 और Qwen3-VL-Embedding दोनों मूल रूप से वीडियो एम्बेड कर सकते हैं — कच्चे वीडियो पिक्सेल टेक्स्ट क्वेरी के समान वेक्टर स्पेस में प्रक्षेपित होते हैं। कोई ट्रांसक्रिप्शन नहीं, कोई फ़्रेम कैप्शनिंग नहीं, कोई टेक्स्ट मध्यस्थ नहीं। "लाल ट्रक एक स्टॉप साइन पर" जैसी टेक्स्ट क्वेरी सीधे वेक्टर स्तर पर 30-सेकंड के वीडियो क्लिप से तुलनीय होती है। यही कारण है कि घंटों फुटेज पर उप-सेकंड सिमैंटिक खोज व्यावहारिक है।

लागत

Gemini

Gemini के एम्बेडिंग API (डिफ़ॉल्ट सेटिंग्स: 30s चंक्स, 5s ओवरलैप) के साथ 1 घंटे की फुटेज को इंडेक्स करने की लागत ~$2.84 है:

1 घंटा = 3,600 सेकंड का वीडियो = मॉडल द्वारा संसाधित 3,600 फ़्रेम। 3,600 फ़्रेम × $0.00079 = ~$2.84/घंटा

Gemini API अपलोड किए गए वीडियो से मूल रूप से प्रति सेकंड ठीक 1 फ़्रेम निकालता और टोकनाइज़ करता है, चाहे फ़ाइल की वास्तविक फ़्रेम दर कुछ भी हो। प्रीप्रोसेसिंग चरण (जो ffmpeg के माध्यम से चंक्स को 480p पर 5fps पर डाउनस्केल करता है) एक स्थानीय/बैंडविड्थ ऑप्टिमाइज़ेशन है — यह पेलोड आकार को छोटा रखता है ताकि API अनुरोध तेज़ हों और टाइमआउट न करें — लेकिन यह API द्वारा संसाधित फ़्रेमों की संख्या नहीं बदलता है।

दो अंतर्निहित ऑप्टिमाइज़ेशन अलग-अलग तरीकों से लागत कम करने में मदद करते हैं:

  • प्रीप्रोसेसिंग (डिफ़ॉल्ट रूप से चालू) — अपलोड करने से पहले चंक्स को 480p पर 5fps पर डाउनस्केल किया जाता है। चूंकि API वैसे भी 1fps पर प्रोसेस करता है, इससे केवल अपलोड आकार और स्थानांतरण समय कम होता है, बिल किए गए फ़्रेमों की संख्या नहीं। यह मुख्य रूप से गति में सुधार करता है और अनुरोध टाइमआउट को रोकता है।
  • स्टिल-फ़्रेम स्किपिंग (डिफ़ॉल्ट रूप से चालू) — बिना किसी सार्थक दृश्य परिवर्तन वाले चंक्स (जैसे पार्क की गई कार) को पूरी तरह से छोड़ दिया जाता है। यह वास्तविक API कॉल बचाता है और सीधे लागत कम करता है। बचत आपकी फुटेज पर निर्भर करती है — घंटों निष्क्रिय समय वाली सेंट्री मोड रिकॉर्डिंग को सबसे अधिक लाभ होता है, जबकि एक्शन-पैक ड्राइविंग फुटेज में स्किप करने के लिए कुछ नहीं हो सकता है।

खोज क्वेरी नगण्य हैं (केवल टेक्स्ट एम्बेडिंग)।

Qwen Cloud (DashScope, Qwen3-VL-Embedding)

DashScope मल्टीमॉडल एम्बेडिंग को प्रति 1,000 इनपुट टोकन CNY में, मोडैलिटी के अनुसार बिल करता है। डिफ़ॉल्ट मॉडल qwen3-vl-embedding के लिए, अलीबाबा की प्रकाशित दरें (अपने क्षेत्र और किसी भी अपडेट के लिए नीचे दिए गए दस्तावेज़ की जाँच करें) लगभग इस प्रकार हैं:

  • टेक्स्ट इनपुट: लगभग ¥0.0007 प्रति 1k इनपुट टोकन
  • इमेज / वीडियो इनपुट: लगभग ¥0.0018 प्रति 1k इनपुट टोकन

इंडेक्सिंग वीडियो चंक्स (वीडियो मोडैलिटी) भेजता है; प्रत्येक search / img क्वेरी अधिकतर टेक्स्ट या इमेज टोकन होती है, जो प्रति टोकन वीडियो से सस्ती होती है। आपकी वास्तविक लागत प्रत्येक API कॉल के लिए DashScope द्वारा लौटाए गए टोकन गणना पर निर्भर करती है (रिज़ॉल्यूशन, अवधि, DASHSCOPE_VIDEO_FPS जैसे सैंपलिंग आदि पर निर्भर करता है) — Gemini की प्रकाशित प्रति-फ़्रेम USD दर की तरह अपने वर्कलोड को मापे बिना कोई निश्चित "$ प्रति घंटा फुटेज" नहीं है।

अलीबाबा एक मुफ्त टोकन भत्ता (जैसे सक्रियण के बाद सीमित अवधि के भीतर 1M टोकन) का भी दस्तावेज़ीकरण करता है; DashScope मल्टीमॉडल एम्बेडिंग मीटरिंग और बिलिंग पेज और Model Studio / बिलिंग कंसोल में पुष्टि करें, क्योंकि मूल्य निर्धारण, क्षेत्र और प्रचार बदलते हैं।

इंडेक्सिंग ट्यूनिंग (दोनों बैकएंड)

ये फ़्लैग दोनों Gemini और qwen-cloud के लिए चंकिंग और प्रीप्रोसेसिंग को प्रभावित करते हैं:

  • --chunk-duration / --overlap — कम ओवरलैप के साथ लंबे चंक्स = कम API कॉल = कम लागत
  • --no-skip-still — प्रत्येक चंक को एम्बेड करें भले ही कुछ न हो रहा हो
  • --target-resolution / --target-fps — प्रीप्रोसेसिंग गुणवत्ता समायोजित करें
  • --no-preprocess — कच्चे चंक्स API को भेजें

ज्ञात चेतावनियाँ (हानिरहित)

स्थानीय बैकएंड इंडेक्सिंग और खोज के दौरान चेतावनियाँ प्रिंट कर सकता है। ये कॉस्मेटिक हैं और परिणामों को प्रभावित नहीं करते:

  • MPS: nonzero op is not natively supported — Apple Silicon पर एक ज्ञात PyTorch सीमा। ऑपरेशन एक कदम के लिए CPU पर वापस आ जाता है; बाकी सब GPU पर रहता है। आउटपुट गुणवत्ता पर कोई प्रभाव नहीं।
  • video_reader_backend torchcodec error, use torchvision as default — torchcodec macOS पर संगत FFmpeg नहीं ढूंढ पाता। वीडियो प्रोसेसर स्वचालित रूप से torchvision पर वापस आ जाता है। यह अपेक्षित है और समान परिणाम उत्पन्न करता है।
  • You are sending unauthenticated requests to the HF Hub — मॉडल बिना टोकन के Hugging Face से डाउनलोड होता है। डाउनलोड गति थोड़ी कम हो सकती है, लेकिन मॉडल ठीक लोड होता है। इसे शांत करने के लिए HF_TOKEN एनवायरनमेंट वेरिएबल सेट करें यदि यह आपको परेशान करता है।

सीमाएँ और भविष्य का कार्य

  • स्टिल-फ़्रेम का पता लगाना ह्यूरिस्टिक है — यह नमूने लिए गए फ़्रेमों में JPEG फ़ाइल आकार तुलना का उपयोग करता है। यह कभी-कभी सूक्ष्म गति वाले चंक्स को छोड़ सकता है या वास्तव में स्थिर चंक्स को एम्बेड कर सकता है। यदि आपको प्रत्येक चंक को इंडेक्स करने की आवश्यकता है तो --no-skip-still से अक्षम करें।
  • खोज गुणवत्ता चंक सीमाओं पर निर्भर करती है — यदि कोई घटना दो चंक्स में फैली हुई है, तो ओवरलैपिंग विंडो मदद करती है लेकिन सही नहीं है। बेहतर चंकिंग (जैसे सीन डिटेक्शन) इसे सुधार सकता है।
  • Gemini Embedding 2 प्रीव्यू में है — API व्यवहार और मूल्य निर्धारण बदल सकता है।

अनुकूलता

यह केवल Tesla सेंट्री मोड ही नहीं, बल्कि .mp4 और .mov फुटेज के साथ काम करता है। डायरेक्टरी स्कैनर फ़ोल्डर संरचना की परवाह किए बिना दोनों फ़ाइल प्रकारों को पुनरावर्ती रूप से ढूंढता है।

आवश्यकताएँ

  • Python 3.11+
  • ffmpeg PATH पर, या बंडल ffmpeg का उपयोग imageio-ffmpeg के माध्यम से करें (डिफ़ॉल्ट रूप से स्थापित)
  • Gemini बैकएंड: Gemini API कुंजी (एक मुफ्त प्राप्त करें)
  • स्थानीय बैकएंड:
    • CUDA या Apple Metal के साथ GPU (VRAM/RAM आवश्यकताओं के लिए हार्डवेयर तालिका देखें)
    • macOS: brew install ffmpeg (वीडियो डिकोडर के लिए आवश्यक)
    • Linux/Windows: कोई अतिरिक्त सिस्टम निर्भरता नहीं
टूल डाउनलोड करें
हार्डवेयरइंस्टॉल कमांडस्वतः पता लगाया गया मॉडलनोट्स
Apple Silicon, 24 GB+ RAMuv tool install ".[local]"qwen8bMPS के माध्यम से पूर्ण float16
Apple Silicon, 16 GB RAMuv tool install ".[local]"qwen2b8B फ़िट नहीं होगा; 2B ~6 GB का उपयोग करता है
Apple Silicon, 8 GB RAMuv tool install ".[local]"qwen2bतंग — लोड के तहत स्वैप हो सकता है; इसके बजाय Gemini API अनुशंसित है
NVIDIA, 18 GB+ VRAMuv tool install ".[local]"qwen8bपूर्ण bf16 सटीकता (CUDA व्हील्स Linux/Windows पर स्वचालित रूप से खींची जाती हैं)
NVIDIA, 8–16 GB VRAMuv tool install ".[local-quantized]"qwen8b4-बिट क्वांटाइज़ेशन (~6–8 GB)
पथकिसके द्वारा लिखा गयाकिसके लिए उपयोग किया जाता हैक्या इसे हटाना सुरक्षित है?
db/sentrysearch indexआपकी एम्बेडेड फुटेज के लिए ChromaDB वेक्टर इंडेक्स।हाँ, लेकिन इससे इंडेक्स डिलीट हो जाता है। दोबारा खोजने से पहले sentrysearch index <dir> पुनः चलाएँ।
.envsentrysearch initडिफ़ॉल्ट बैकएंड के लिए आपकी Gemini API कुंजी संग्रहीत करता है।हाँ, लेकिन Gemini-समर्थित कमांड आपसे फिर से एक कुंजी कॉन्फ़िगर करने के लिए कहेंगे।
dlq.jsonअसफल sentrysearch index चंक्सडेड-लेटर कतार जिसे sentrysearch dlq list द्वारा निरीक्षित किया जाता है और --retry-failed के साथ पुनः प्रयास किया जाता है।हाँ। इसे हटाने से असफल चंक्स भूल जाते हैं, इसलिए भविष्य के इंडेक्स रन उन्हें नए काम के रूप में पुनः प्रयास कर सकते हैं।
last_clip.jsonवे कमांड जो एक क्लिप सेव करते हैं (search, img, highlights, overlay)SentryBlur को sentryblur ... --last के साथ सबसे हालिया सेव की गई क्लिप का उपभोग करने देता है।हाँ। केवल --last हैंडऑफ़ खो जाता है; सेव की गई MP4 फ़ाइलें डिलीट नहीं होतीं।
last_search.jsonsentrysearch search, img, और highlightsSentryMerge को sentrymerge --last के साथ सबसे हालिया परिणाम सूची का उपभोग करने देता है।हाँ। केवल --last हैंडऑफ़ खो जाता है; खोज इंडेक्स अपरिवर्तित रहता है।
historysentrysearch shellइंटरैक्टिव शेल के लिए Readline कमांड हिस्ट्री।हाँ। अगली बार शेल खाली हिस्ट्री के साथ शुरू होता है।