ClipMash - Generate video compilations automatically (v0.21.0)

Hi!

ClipMash is an application to semi-automatically create video compilations. Quick feature list:

  • Use videos from your hard drive, download them from within the app or use videos saved on your StashApp server (if you have one)
  • Create markers (interesting parts of the videos that you want to include in your compilation) with labels, either by hand or by having ClipMash try to detect scene transitions for you (cuts in the video).
  • Add music if you want.
  • Decide how the clips should be created. If you’ve added music, you can have ClipMash cut on the beat of the music. Otherwise, it will create clips with a configurable maximum length and cut them together either in the order they occurred in the scene, or at random.
  • You can also set up how much (percentage-wise) of each marker should end up in the video.
  • Can create funscripts by combining the scripts of the source videos, or by making a beat-based funscript to the music you selected.

It works on Windows, MacOS and Linux. The UI runs in your browser, any modern browser should work.

I made an example compilation here (obviously NSFW): 108.29 MB file on MEGA

Download: Releases · soundchaser128/clip-mash · GitHub

Discord server: ClipMash

Buy me a coffee, if you enjoyed this app https://ko-fi.com/soundchaser128

Screenshots:

35 Likes

This is the first I’m seeing of stashapp, it looks super useful (as does your project), do a lot of people here use stashapp to organize their collections?

I’ve seen it mentioned here a bit. Worth noting is that it also works with the Handy and recognizes funscript files and can play them back along with the video. And yes, it’s really good. I can recommend it.

That is definitely worth noting. My SAN is so poorly organized, I’ve got shit all over the place. I may make that a weekend project.

Does this also include the funscript in the compilation?

No, that would be really cool, but I have no experience in stitching together scripts like that. I made an issue and I’ll try looking into it: feat: Create a funscript file stitched together from the different parts of the compiled clips · Issue #5 · soundchaser128/stash-compilation-maker · GitHub

Still a really cool idea. I’m gonna give it a try later today :slight_smile:

Thanks! Let me know what you think.

I’ve been playing with funscripts in Python and working on a few tools, so maybe I’ll come up with something that can take a list of scene metadata from a number of clips, and stitch together the strips.

The thing is, doesn’t stash more or less randomly generated previews throughout the video? It seems like with yours, you’re able to tag scenes and them stitch them together using stash? I think stash uses ffmpeg on the backend to compile the video compilation clips.

I want to at least make a funscript video combiner/splitter that works a bit better than the one that’s out, where you need to specify a CSV and the number of seconds.

Eventually, I want to make something that can script complication videos to a beat and dynamically speed up video scenes and strokes to match that beat. That’s like my master project I’ve been slowly working towards…

Seems like a great project! I must be stupid or something, but when I run the service I get asked to input th API key, to get it I have to navigate to http://localhost:5174/settings?tab=security when I do I only get this error:

How can I solve this?

1 Like

Nice!

Making compilations with funscripts using stash markers would be super useful. I tried making one and it was a pain to get the script stiched together in OFS.

And yes - stash is the bomb for local vids+funscripts.

Hey, I think you’re going to the wrong URL. The URL to go to to find the API key is generated based on the URL to the stash instance that you enter in the input field. If you enter the correct URL of your Stash instance (e.g. http://localhost:9999 if it’s just running on your own machine), the link should take you to the correct settings page.

The thing is, doesn’t stash more or less randomly generated previews throughout the video? It seems like with yours, you’re able to tag scenes and them stitch them together using stash? I think stash uses ffmpeg on the backend to compile the video compilation clips.

Yes, but I don’t use the generated video previews. I run ffmpeg myself to generate clips of varying lengths from the different scene markers.

I’m working on some code to stitch together funscripts here: feat: Add funscript generator by soundchaser128 · Pull Request #6 · soundchaser128/clip-mash · GitHub, still pretty early though.

1 Like

Thanks for the help, however I’m still stuck al the error screen.

I run the .exe, it installs ffmpeg and get this:

So I put port 5174 after the localhost like this:

I go on to http://localhost:5174/settings?tab=security and get the same error message.

I use XAMPP Control Panel to look if it is running on a different port, but I can’t find stash at all.
Also disabeled the firewall, ran everything as an Admin and disabled the automatic https setting in Chome. I still can’t get it to work.

Any pointers for me as where I might look for sesorving this?

1 Like

Do you have Stash installed and running? (https://stashapp.cc/) That’s the thing you need the URL from. Usually it’ll run on http://localhost:9999/ unless it’s running on your NAS or a homeserver or something else, then you’ll need to enter the hostname or IP address of that server instead.

@kinetics @Mjunior

This is a first shot at combining the funscript files linked in Stash to the respective scenes into the compilation. At the end of the process, when you are able to download the compilation, you get a separate link to download the funscript. I tried it and the output looks surprisingly reasonable. There were a few slightly abrupt transitions between the clips, but overall it looked okay. You might want to look at the generated script in OFS (or similar) before trying it on your device. Scenes that don’t have a linked funscript are simply ignored and no movements are generated for that period. (and I guess the funscript button should be hidden if there were no actions at all, but that should be easy to fix)

Download pre-release here: Release v0.5.0-pre.0 · soundchaser128/stash-compilation-maker · GitHub

The example compilation including script I generated: 115.89 MB folder on MEGA

1 Like

Hello and thank you for sharing this cool app! It seems really useful and can save the hassle of creating a compilation by hand.

However, it doesn’t seem to work for me. I setup stash, let it scan, but when I open your compilation generator, no content shows up in the browser. There are no tags, scenes or performers, even though I set everything up in stash.
Maybe I there is any error, with the API key. Maybe a space or so too much. But where can I change the API key in your app?

Any idea what I can do?

Thank you in advance.

Hmm, that’s odd. The configuration form should not accept values that don’t work (it tests them before setting them). Have you added any scene markers? If there are none, the app won’t really do anything.

A couple things you can try:

  • When you open one of the pages (list of performers, tags, or scenes), what does the terminal window for the process say? Any error or warning logs?
  • You can change the API key on http://localhost:5173/config. Currently, there’s no link to that page, and you can’t see the currently set value but I’m working on fixing that.
  • The application also logs the path to the configuration file that holds the API key and the URL to Stash. You can check that file as well.

Thank you!

I got it now. I didn’t put any markers.
So, it’s only possible by setting markers? Would it also be possible without? I would now need to go through a bunch of videos and create markers.

Edit:

When I am trying to create the video, I get this error →

error: Generic(Error { kind: NotFound, message: "program not found" })

Hm, that sound like ffmpeg can’t be found. Are you maybe on Mac? There, downloading ffmpeg automatically currently does not work. It’s usually easiest if you install it with homebrew (install instructions at their website and then run brew install ffmpeg). Otherwise, you can download executables here: Download FFmpeg

So, it’s only possible by setting markers? Would it also be possible without? I would now need to go through a bunch of videos and create markers.

For now, it’s only possible with markers, yes. Maybe eventually I can integrate something like StashTag for automatically finding different positions or actions inside the video, but that’s still a bit away. There’s also a plugin for automatically fetching markers from a central server (https://timestamp.trade/) but that requires a bit more setup.