Hey everyone!
I've been working on a small app to automatically generate PMVs called
Prompt Music Video Director (PMV Director). It's heavily inspired by the discontinued Auto PMV Generator.
I'm not a developer, so I've been learning as I go. After months of work, the tool has grown into something genuinely usable for creating PMVs, interactive Mistress sessions, and more.
The concept is pretty straightforward: generate PMVs using text prompts. Here's how it works: it extracts frames from your source videos, analyzes them with a vision AI model, and stores the descriptions. Then you pick a song and set your cut points. After that, you write a prompt describing what you want in the final video, and it performs semantic searches to pull the right clips from your previously processed footage. Finally, you can export as MP4 or OpenTimelineIO if you want to fine-tune things manually in a video editor.
There's also a non-AI mode that skips the frame analysis and just grabs clips randomly instead.
For AI mode, you'll need a PC with a dedicated GPU, running it on CPU alone is PAINFULLY slow. I'd recommend at least 6GB of VRAM.
Here's a demo showing how to use it to create a PMV:
https://pixeldrain.com/u/TwdFao4G
I've built binaries for both Windows and Linux if anyone wants to give it a shot
How It Works:
- Spoiler: show
-
1. Build a video library — Scan your video collection. The tool extracts frames and, in AI mode, analyzes each frame with a vision model to build searchable descriptions.
2. Create a project — Link your library, pick source videos, and analyze audio. The tool detects beats and musical structure to generate optimal cut points synced to the song.
3. Generate a timeline — Write a prompt describing your desired video narrative. The LLM converts it into structured segments, then matches each segment to the best frames in your library using semantic similarity. There's also a random mode if you don't want to use AI.
4. Edit and export — A visual timeline editor lets you manually refine segments. Export as MP4 (with configurable resolution, quality, FPS) or OpenTimelineIO for further editing in DaVinci Resolve, Premiere Pro, etc.
Main Features:
- Spoiler: show
-
Dual Operation Modes
- AI Mode: Semantic frame understanding with vision LLMs, intelligent clip selection based on your text prompts, AI narration and voice-overs. Requires a GPU (6GB+ VRAM recommended).
- Random Mode: Fast processing without AI. No GPU needed. Clips selected randomly or chronologically.
Audio Analysis
- Automatic beat detection synchronized to music structure
- Adjustable cut density, peak prominence and gap-filling
Video Library System
- Self-contained .vlib files with metadata and frame descriptions
- Contact sheets for visual preview of each video
- Advanced filtering by filename, category, actors, orientation
- Batch processing with concurrent analysis
AI-Driven Timeline Generation
- Text prompt to structured segments conversion
- Intelligent variety system to avoid repetitive video selection
- Configurable similarity thresholds and content filters
Vertical Video Support
- Tri-screen vertical layout (left, center, right positions)
- Fast cuts rotate through positions; slow cuts change all three simultaneously
- Mirror mode for mirrored vertical videos
Export Options
- MP4: Direct export with resolution presets, quality levels, FPS options, resize modes
- OpenTimelineIO: Professional format for DaVinci Resolve, Premiere Pro, etc. Configurable video tracks
Post-Processing Effects
- Beat Bar Overlay: Cock Hero style visual rhythm indicator synced to music (You can visually change the beats and the sound of the beatbar by modifying the files in the _internal/assets/beatbar folder)
- AI Voice-Over: Automatic narration based on scene descriptions. 6 built-in voices (male/female, US/British accents)
- Censorship System: Optional content filtering with pixelated, blurred, or black box methods. Configurable detection classes and parameters.
- Funscript Generation: Generate .funscript files synchronized with the beatbar
- Goon Mode: Animated caption overlays burned into the video. You can change the messages within the captions file (_internal/assets/captions/captions.toml); these should be short phrases. The tag [any] can appear at any point in the video, [from_40] starting from 40% into the video, and [from_70] only during the final 30% of the video's duration.
- Goon Voice: Optional TTS voice-over from configurable goon voice texts in the file _internal/assets/captions/goon_voice.toml
You can also add all these effects to an existing external video without needing to create a new PMV. From the menu option Project > Post-Process Video, you can import your video and decide which effects you want to use.
Project Management
- Save and resume projects at any time
- All processing is cached, come back later without redoing work
Mistress Mode
A completely separate interactive experience built on top of the video library system. The AI Mistress uses your analyzed videos to create a video tease for you, generating several PMVs and instructing you on what to do.
Here you can see this demo session exported as a video:
https://pixeldrain.com/u/HCBLs3Q2
How to create a game with your Mistress:
- Spoiler: show
-
1- Create a New Game in the Mistress Mode Menu.
2- Configure the game by adding your Mistress's personality, a short story for the lore, photos of your Mistress (which must be a folder containing subfolders, and each of those subfolders should hold a gallery of photos of your Mistress), a music folder (she will use these for the PMVs), her voice, and the .vlib file, which is your pre-processed video library (by default, she can use any video from your library, but you can filter them so that it only uses a subset of them). Additionally, optionally include a folder with videos that are not yet processed in your VLIB library (she may decide to use them for some tease). Finally, configure the game's length by setting the minimum and maximum number of videos she wants you to generate.

3- You must now generate a session; this will take several minutes. Once it is complete, you can play that session. You can generate multiple sessions and play them whenever you wish. A single session consists of several interactions where your Mistress uses her photos to give you a small task. She will then use another photo to introduce the video she has generated and tell you what to do while watching it. At the end of the session, she will inform you whether you are allowed to cum or if you have been denied. In the initial sessions, she will always deny you, but as you play more, the chance that she allows you to cum increases (though slightly). Currently, it is quite strict, and she enjoys keeping you denied for a while. In the future, I plan to incorporate a feature that allows you to customize the likelihood of her letting you cum at the end of the sessions.

I advise that you add information about actresses, categories, and even notes to your videos in your video library (the .vlib file). Your Mistress will use all of this information when creating the teasers. It's also a good idea to process some videos in portrait orientation so the AI can create PMVs using a layout of three portrait videos.
For example, here is my vlib file:

You can play the sessions interactively within the app, or you can also export them as videos if you wish to share them.
I have also implemented a chat feature where you can talk to your Mistress; however, it is currently experimental. She will use photo galleries from pornpics.com to tease you even more!
Example:

Configuration:
Quick Start:
- Spoiler: show
-
1. Download and extract the binary for your platform (Windows or Linux)
2. Install FFmpeg — either add it to your system PATH, or download the binary and reference it in `config.toml`
3. For AI mode , download llama.cpp for your OS/GPU and set its path in `config.toml` (the GUI Config menu can help auto-detect and download the right version).
4. Download the two AI models (vision + text, each with their mmproj file) and place them in the `AImodels/` folder, or let the Config menu download the default ones for you
5. Reference model paths in `config.toml` (or use the Config menu if it offers auto-download)
6. Open the GUI Config menu and verify all checks show green — if they do, you're good to go
7. Run `PMVDirector.exe` (Windows) or `PMVDirector` (Linux)
8. Create your video library, link it to a project, and start generating.
Config Menu
- Spoiler: show
-
A GUI config popup lets you quickly verify that everything is set up correctly. If all checks show green, you're good to go. It's a fast way to validate your installation before starting to use the tool. For advanced tweaks, you can still edit config.toml manually.
Bad Config:

Good Config:

Detailed Configuration
- Spoiler: show
-
The tool is designed to run everything locally on your PC with your GPU. No data is sent to external services, the tool spins up a local llama.cpp server and uses it for all AI operations (frame analysis, timeline generation, voice narration, Mistress mode). You have full privacy.
FFmpeg (required for all modes)
FFmpeg is needed to process and encode videos. Install it in your system PATH, or download the binary for your OS and set the path in the config.toml file (ffmpeg_location variable). The Config menu can verify FFmpeg is working and help you download the right version.
llama.cpp (required for AI mode)
llama.cpp is an open-source library that runs large language models locally. The tool uses it to run two separate servers: one for the vision model (analyzes video frames) and one for the text model (generates timelines, voice narration, Mistress mode text, and also handles image analysis in Mistress mode).
The best approach is to download the pre-built version compiled specifically for your OS and GPU (CUDA for NVIDIA, ROCm for AMD, Vulkan for cross-platform). The Config menu in the app can:
- Verify if llama.cpp is properly installed
- Attempt to auto-detect which version matches your system
- Download the right binary for you
If you already know which version you need, it's faster to configure it manually in config.toml (llamacpp_location variable).
AI Models (two required, GGUF format)
You need two model files for the two servers:
1. Vision model — analyzes video frames and describes what's in them
2. Text model — generates timelines, voice narration, Mistress mode text (also has vision capability for Mistress mode image analysis)
For each server, you need both the `.gguf` model file and the `.gguf` mmproj file. Place them in the `AImodels/` folder (or any location — just reference them in config.toml). The Config menu can auto-download the recommended models for you.
Based on my testing, these are the models that work best:
Vision model (for analyzing video scenes):
- Qwen3.5-4B-Uncensored-HauhauCS-Aggressive
- Best at describing video scenes accurately
- Fast on consumer GPUs
- Download the `.gguf` + `mmproj` from: https://huggingface.co/HauhauCS/Qwen3.5 ... Aggressive
Text model (for generating timelines, narration, Mistress mode):
- Gemma-4-E4B-Uncensored-HauhauCS-Aggressive
- Best at generating coherent text and following instructions
- Also has vision capability (mmproj) used in Mistress mode
- Download the `.gguf` + `mmproj` from: https://huggingface.co/HauhauCS/Gemma-4 ... Aggressive
It needs two separate models because Qwen3.5 is significantly better than Gemma4 at describing visual scenes, while Gemma4 is significantly better at generating coherent text. This combination gives the best results.
These two models offer the best balance between quality and speed for my setup. You can experiment with other models and other quantization levels depending on your GPU VRAM. Larger quant = better quality but more VRAM. Smaller quant = faster but potentially less accurate.
Advanced Configuration
If you know your way around llama.cpp and want fine-tuned control, you can adjust the image_flags and text_flags variables in config.toml. These control extra flags passed to each llama.cpp server instance. The current flags are the ones I've tested and confirmed to work best with the recommended models above. If you're not sure what these do, leave them as-is — changing them incorrectly can cause the AI servers to fail to start or produce bad results.
The file config.toml has a lot of other settings. I've tried to explain what each one does in the comments, but unless you know what you're doing, I don't recommend changing the other values.
Voices
The tool ships with 6 built-in voices (Kokoro TTS): Nicole, Bella, Isabella (British), Onyx, Michael, Daniel (British).
You can also:
- Use a remote TTS service — any OpenAI-compatible TTS endpoint. Configure the endpoint, API key, and parameters in config.toml (and test it in GUI Config popup).
- Clone a custom voice — provide a reference audio file and the tool will clone that voice. A file picker appears in the GUI when you select "Clone voice" in the voice dropdown.
Both remote TTS and voice cloning are configured in the `[voice.remote]` and `[voice.clone]` sections of config.toml, and all options are commented to explain what they do. If you're unsure about a setting, leave the defaults as-is.
To clone voices, I recommend the OmniVoice TTS; it is quite good and lightweight (only 2.5GB). For easy installation, I suggest this project: https://github.com/maemreyo/omnivoice-server. Using Docker makes the setup very easy, then you just need to point the URL in the endpoint variable within the [voice.clone] section of your config.toml.
Example of PMVs created using the tool:
- PMV generate in the demo:
https://pixeldrain.com/u/sx8NQUkW
- Goon demo (added goon captions and goon voices to the round 2 of my cock hero, 'Why Are High Heels So F#King Sexy'):
https://pixeldrain.com/u/9WnpHVm1
- Video using the "voice" feature:
https://pmvhaven.com/video/pmvdirector- ... cfcc7cd1b4
- Two videos exported as otio and minimally edited manually:
https://pmvhaven.com/video/pmvdirector- ... 71f15c96d0
- Added censorship and beatbar to FusionPMV by Caius:
https://www.eporner.com/video-jFcb0snTf ... -censored/
- Added voice and beatbar to Perfect Pussy PMV by Bias:
https://www.eporner.com/video-2mYkoQbk3 ... ith-voice/
- Tri-screen vertical layout examples:
https://pixeldrain.com/u/jM4kHKfv and
https://pixeldrain.com/u/BYNPDxJ6
Important Note: The quality of results heavily depends on how well the vision model analyzes the frames. Since I'm using a generic model, it's not always very accurate. Ideally, you'd want a model specifically trained for this purpose, but training one is beyond my current knowledge. If anyone knows of a suitable model for this use case, please let me know!
Download Links:
- Windows:
https://mega.nz/file/Bm91gLAS#0WIdYcWrj ... HFJLvjnUug
- Linux:
https://mega.nz/file/Zu8CjLCL#XjumDmFyd ... rsDsLe1PvA
I've tested the tool quite a bit and I think it's in a usable state, but if you try it, you might encounter bugs or issues while setting it up. You can post here or send me a private message, and I will try to help you fix them.
If anyone tries it out, feedback and suggestions are super welcome!

I'm planning to keep adding features as I go.