Skip to content

Eumgill98/AutoClap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoClap

logo

:👏An automated clapperboard detection tool that locates clap points in videos to streamline video editing workflows.

🧠 Motivation

Manual identification of clapper points in raw footage is time-consuming and repetitive, especially when handling large volumes of video. AutoClap was created to automate this process using computer vision, reducing editing time and enabling a more efficient post-production workflow.

This project also serves as a hands-on exploration of building a modular, extensible video-processing pipeline rather than focusing solely on model performance.

🎯 Goals

  • Automatically detect clapperboards in video footage

  • Convert detected timestamps into precise frame indices

  • Design a detector pipeline that is easily extensible to new models

  • Emphasize clean architecture over one-off scripts

🔍 System Architecture

Video Input ↓ Video Sampler (uniform / custom) ↓ Detector Pipeline ↓ Detector Output ↓ OCR Pipeline ↓ Result 

⚙️ Installation

poetry

# Clone repository git clone https://github.com/Eumgill98/AutoClap.git cd autoclap # Install dependencies poetry install

pip

pip install git+https://github.com/Eumgill98/AutoClap.git

📁 Project Structure

autoclap ├──core │ ├──output │ ├──sampler ├──detector │ ├──base │ ├──yolov8 │ └──detector_pipeline.py ├──ocr │ ├──base │ ├──paddleocr │ └──ocr_pipeline.py └──README.md 

📌 Example

from autoclap.detector import DetectorPipeline, YOLOv8Detector from autoclap.core.sampler import TimeSlidingVideoSampler from autoclap.ocr import OCRPipeline, PaddleOCRModel VIDEO_FILE = YOUR_VIDEO_FILE video_sampler = TimeSlidingVideoSampler( video = VIDEO_FILE, batch_size=16, ) model = YOLOv8Detector( weight_path=PRETRAINED_MODEL_WEIGHT, ) d_pipeline = DetectorPipeline( model= model ) result = d_pipeline.run( video_sampler ) print(result) print() # check ocr result = result[0] clapper_zone = result.get_clapperboard_zone() ocr_pipeline = OCRPipeline(model=PaddleOCRModel(device='cpu')) for (s_time, end_time, presence, bboxes) in clapper_zone: if presence: frame = result.get_frame_by_time(s_time) frame_bbox = (frame, bboxes) t = ocr_pipeline.run(frames_bboxes=frame_bbox, pad=5) print(t)

⭐ Pretrained Model Weight

  • To be added

About

:👏AI-powered clapperboard tracking in video

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages