A web-based video timeline tool that allows users to select, mark, and manage regions of interest within video files directly in the browser. Built with Vue.js, this tool provides an intuitive interface for creating, editing, and managing video time regions.
- Load and play local video files (.mp4) directly in the browser
- Real-time video scrubbing with timeline interaction
- Timecode display (HH:MM:SS)
- Basic video playback controls (play/pause)
- Interactive timeline with draggable playhead
- Real-time video preview while scrubbing
- Visual grid markers for time reference
- Hover scrubbing with timecode display
- Create regions by clicking and dragging on the timeline
- Adjust region boundaries using interactive handles
- Real-time timecode display while dragging region handles
- Visual feedback for region duration
- Easy region deletion with remove button
- Multiple independent regions support
- Minimum region size enforcement
- Non-overlapping region constraints
- Export selected regions as JSON (right now to console)
- Durations for each region
- Time-based metadata ready for external processing
- Vue 3 - Frontend framework
- Vuex - State management
- Tailwind CSS - Styling
- HTML5 Video API - Video playback
- Chrome (recommended)
- Firefox
- Safari
- Edge
VideoPlayer.vue
- Handles video playback and controlsTimeline.vue
- Main timeline interfaceTimelineRegion.vue
- Individual region managementVideoControls.vue
- Playback controls and timecode display
- Node.js 14.x or higher
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/video-timeline-selector.git
- Install dependencies:
cd video-timeline-selector
npm install
- Start the development server:
npm run dev
-
Load a Video:
- Click the file input to select a local video file
- Supported format(s): MP4 (browser-dependent)
-
Create Regions:
- Click and drag on the timeline to create a new region
- Regions are highlighted in blue
- Adjust region bounds using the handles on either end
-
Edit Regions:
- Drag handles to adjust region start/end times
- Click the remove button to delete a region
- Hover over regions to see duration
-
Export Data:
- Click the Continue button to export region data
- Region data is logged to the console in JSON format
Exported region data follows this structure:
{
"regions": [
{
"start": 10.5, // Start time in seconds
"end": 15.2 // End time in seconds
}
// ... additional regions
]
}
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- The majority of this is built in combination with
Claude-3.5-sonnet-v2
, with some refinement by Jeremy - Built with Vue.js
- Styling powered by Tailwind CSS
- Inspired by professional video editing tools
- Created for web-based video processing workflows