Video: A Language for Making Movies
lang.video
lang.video
https://docs.racket-lang.org/video@video/Getting_Started.htm...
While muvee was about automatic video construction, the language had the necessary primitives to programmatically construct video. The basic abstraction on top of which everything from video clips to effects, transitions and layers were built was a "Show" which is a function from time to image.
More here -
[1] Authoring muvee styles - describes how to make your own automatic video "styles" and includes the lower level api too - https://srikumarks.github.io/muvee-style-authoring/index.htm...
[2] muSE the core open sourced language - https://github.com/srikumarks/muSE
edit: muvee Reveal - https://www.muvee.com/products/muvee-reveal-encore-automatic...
disclosure: I used to work for muvee.
Good software design is about anticipating what your user will need to know to move forward. Your project failed to do that at step 0: the project home page doesn't show the information people will need to move forward. Some indication of what the project does, what it looks like...
What I thought when clicking on the HN link:
Video-making with a programming language! How interesting! Lots of potential with animation, concurrency, etc. What does that look like? I want to see a session with the tool. At the very least I want to see the output of the tool, and some code snippets. If I like it I'd like to know who made it, and why, and what they've done with it so far, and where the money's coming from. Well, at least there's a getting started button, nice and big and red! Oh, all it's telling me to do is install this thing. Is the author crazy? I'm not installing something without a single goddamn screenshot! Lets write an HN comment...
The thing is I am not going to install your program without this information, and I think you need to spend some time thinking about what visitors to your project will need to see before they take the plunge and look at your stuff.
Meanwhile, for anyone curious there are some screenshots and demonstrations of usage in the docs, starting with this page:
https://docs.racket-lang.org/video@video/Getting_Started.htm...
Myself -- little more than an enthusiast -- clicked the homepage link, the documentation link, the blog and ended up landing at the point where the line on my "interest in the product" part of the graph met my "time I'm willing to spend figuring out if I'm going to be more interested" before I ever got the answer to "would I want to use this?"
That's fine -- the author is within his rights to target what s/he wants. Perhaps it's so Alpha that the author doesn't desire people other than "serious hobbyists" to dig in deeper (there's valid reasons to do this). But if the goal was to get larger traction (as posting to HN is likely to cause), that didn't happen, for me.
The reason I concluded "it's not for me" is I've realized that trying to avoid learning big heaps of pain like ffmpeg takes more energy than just climbing the steep learning curve of the original tool...and in theory writing my own abstractions over it. To put it another way, I can probably automate ffmpeg using Babel in emacs org-mode and get tooling that hews closely to what I am trying to do.
FWIW I also posted a link to a Python repository wrapping ffmpeg. Similar reasons. Similar conclusion. But the Python tool is much more mature and would probably be a better engineering choice than an org-mode document in a team environment with a normal distribution of tool preferences among its members.
Well, then, a valuable lesson. I would suggest that writing a blog post about that experience and posting to HN about that would actually have been more interesting, for me.
There are some solid wrappers, now, but in the past most of the libraries I've run into (at least on the C# side) exposed a limited feature set as a way of reducing the complexity. The features omitted, of course, were ones I needed. So I always ended up back using a ba/zsh script and the command-line.
Based on my notes, I've always felt that it wouldn't take much to represent the command-line options in a more elegant way using a YAML definition (with more descriptive property names than the CLI options use). Inputs, Outputs, Filters and their Relationships between each. Seems like it'd be easy to validate outside of ffmpeg... I went down the path, briefly, but got side-tracked.
If you're creating a project like this, Use a unique name. This is basically going to be completely impossible to search for.
One really annoying thing is that can make searching for information very difficult if the thing in question isn't very popular. E.g. I wanted to buy valves for a project rated for steam service. It was almost impossible at first as using steam and valve in the same search term bought up Valve the gaming company and their Steam gaming platform. I then had to use specific technical terms such as steam "gate valve" and so on plus throwing in -game or -gaming to weed out erroneous results.
Initially I used it because I couldn't bother with learning any of the free nonlinear video editors on Linux (many of which are pretty flaky/hard to use, or at least were back then). Having become actually become semi-familiar with a couple of NLEs since then, I can say moviepy is a bad NLE replacement for most use cases, but for others it's a real time saver.
Full disclosure: Making an online video editor at https://www.mixcut.com
"Video" is such a bad name that literally anything is better than it. Its like calling a photo editing app, called "Photo" or a car company called "Car". Uff!
Pick an animal. A tree species. Something from the periodic table. Or, something made up like "Mixcut".
* Lion video editor
* Juniper video editor
* Tungsten video editor
* Superion video editorLet's not forget Javascript + Video web api + WebGL, insanely powerful when it comes to real time video manipulation.
Full disclosure: Making an online video editor at https://www.mixcut.com with web technologies.
It says it combines racket with a video editor. What needs to be automated in a video editor? Why does it call itself a new language?
> Video Language (or VidLang, sometimes referred to as just Video) is a DSL for editing...videos. It aims to merge the capabilities of a traditional graphical non-linear video editor (NLVE), with the power of a programming language.
Which is exactly what AviSynth and VapourSynth have been doing successfully for years.
edit: from Wikipedia's list of languages I found the following:
"Action!", "Basic", "BLISS", "Cool", "Hack", "Pure", "SMALL". Some of them are acronyms/retronyms. Special mentions: Smalltalk and High level shader language (HLSL).