A command-line tool for creating timed markers and controlling OBS Studio during video recording sessions. This tool helps streamline your video editing workflow by automatically tracking timestamps and controlling OBS recording functions.
- Timed Markers: Automatically timestamp all actions for precise video editing
- OBS Integration: Direct control of OBS Studio via obs-cli
- Magic Markers: Special actions that trigger OBS commands automatically
- Break Management: Automatic numbering of recording segments
- Flexible Configuration: Support for config files and command-line overrides
- Remote OBS Support: Connect to OBS instances on different machines
- Bash (version 4.0 or later)
- OBS Studio with obs-websocket plugin
- obs-cli - Command-line remote control for OBS
yay -S obs-cligo install github.com/muesli/obs-cli@latestDownload from the obs-cli releases page
- Clone or download the
markerscript - Make it executable:
chmod +x marker
- Optionally, copy to your PATH:
sudo cp marker /usr/local/bin/
-
Copy the example config:
cp .vaideoEditor.example .vaideoEditor
-
Edit
.vaideoEditorwith your OBS settings:# OBS WebSocket connection settings OBS_HOST="localhost" # OBS host (default: localhost) OBS_PORT="4455" # OBS WebSocket port (default: 4455) OBS_PASSWORD="" # OBS WebSocket password (optional)
- Install the obs-websocket plugin in OBS Studio
- Configure WebSocket settings in OBS:
- Go to Tools → obs-websocket Settings
- Set port (default: 4455)
- Set password (optional but recommended)
- Enable the WebSocket server
./marker <action> <marker-value> [options]| Action | Description | OBS Command |
|---|---|---|
start |
Start recording with filename | obs-cli recording start |
mute |
Mute microphone | obs-cli source toggle-mute 'Mic/Aux' |
speak |
Unmute microphone | obs-cli source toggle-mute 'Mic/Aux' |
timestamp |
Add timestamp marker only | None |
break-start |
Start break recording (numbered) | obs-cli recording start |
break-stop |
Stop break recording | obs-cli recording stop |
stop |
Stop recording | obs-cli recording stop |
| Option | Description | Default |
|---|---|---|
--file <file> |
Marker file to save to | vaiditor.txt |
--host <host> |
OBS host address | localhost |
--port <port> |
OBS WebSocket port | 4455 |
--password <pass> |
OBS WebSocket password | (none) |
--config <file> |
Configuration file | .vaideoEditor |
--verbose |
Increase verbosity | |
--quiet |
Decrease verbosity |
# Start main recording
./marker start "intro-video"
# Add timestamp markers
./marker timestamp "important-point-1"
./marker timestamp "transition-to-demo"
# Mute during pause
./marker mute "thinking-pause"
./marker speak "resume-talking"
# Stop recording
./marker stop "end-intro"# Start first segment
./marker start "tutorial-part1"
# Take a break
./marker break-stop "end-part1"
# Start break recordings (auto-numbered)
./marker break-start "tutorial" # Creates tutorial_1_raw.mkv
./marker break-stop "end-break1"
./marker break-start "tutorial" # Creates tutorial_2_raw.mkv
./marker break-stop "end-break2"
# Final recording
./marker start "tutorial-outro"
./marker stop "finished"# Connect to remote OBS instance
./marker start "remote-recording" --host 192.168.1.100 --password secret
# Or set in config file and use normally
./marker mute "pause"The marker file contains timestamped entries in the format:
timestamp|action|marker_value
Example vaiditor.txt:
1704721234567|start|intro-video
1704721245123|timestamp|important-point-1
1704721267890|mute|thinking-pause
1704721278456|speak|resume-talking
1704721298123|stop|end-intro
If your microphone source in OBS has a different name, you'll need to modify the script. Common source names:
'Mic/Aux'(default)'Microphone''Audio Input Capture'
Use different config files for different setups:
./marker start "recording" --config .obs-local
./marker start "stream" --config .obs-remoteIntegrate with other tools:
#!/bin/bash
# Auto-recording script
./marker start "automated-session"
sleep 10
./marker timestamp "10-seconds-in"
sleep 30
./marker stop "automated-end"-
"obs-cli not found"
- Install obs-cli (see Prerequisites)
- Ensure it's in your PATH
-
"OBS command failed"
- Check OBS is running
- Verify WebSocket plugin is installed and enabled
- Check connection settings (host/port/password)
-
"Missing required tags"
- Ensure obs-websocket plugin is properly installed
- Check OBS WebSocket server is running
-
Microphone toggle not working
- Check your microphone source name in OBS
- Modify the script if using a different source name
Use verbose logging to troubleshoot:
./marker start "test" --verbose
./marker start "test" --verbose --verbose # Extra verbosevaideoEditor/
├── marker # Main script
├── .vaideoEditor.example # Example config file
├── .vaideoEditor # Your config file (create from example)
├── vaiditor.txt # Default marker file (generated)
└── README.md # This file
Feel free to submit issues and enhancement requests!
This project is open source. Please check individual component licenses:
- obs-cli - MIT License
- OBS Studio - Free and open source software for live streaming and screen recording
- obs-websocket - WebSocket plugin for OBS Studio
- obs-cli - Command-line remote control for OBS