
Video: A Language for Making Movies - brudgers
https://lang.video/
======
javajosh
Take this feedback as constructive, because Racket is cool and a movie-making
language is interesting and I want you to succeed.

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.

~~~
derision
I disagree. A link to documentation is at the start of the page. That's where
I expect to see code samples and output which is all there

~~~
mdip
Which covers, reasonably, people who have an idea of what the product is and
enough motivation (i.e. working in the space, or a serious hobbyist) to click
in more deeply.

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.

~~~
brudgers
I posted it to HN. It's not my project. I found it interesting because I have
some level of current interest in ffmpeg. I googled "ffmpeg racket" probably
because I saw this or (something like it) at some point in the past several
years. I went about as deep into the project as you did and concluded "it's
not for me" too. It was still intellectually interesting, hence the
submission.

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.

~~~
javajosh
_> 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_

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.

~~~
brudgers
Even though I know that its better for me to just learn the base technology
doesn't mean I don't try to avoid reading the manual. Knowing there are no
silver bullets doesn't mean I don't want one. It's just that this time it only
took me a few hours and a night's sleep to stop looking. Unfortunately, by
that time, both articles were on the front page. Or fortunately to the degree
my self worth is tied to my HN karma.

------
grblovrflowerrr
The "Getting Started" page of the documentation seems to be a better
introduction to the project than the home page. It has a tutorial with
screenshots and code snippets, and is overall a better description of what the
language does:

[https://docs.racket-
lang.org/video@video/Getting_Started.htm...](https://docs.racket-
lang.org/video@video/Getting_Started.html)

------
sriku
About a decade and a half ago, Microsoft had this DirectShow interface called
"Timeline" that would provide a similar though non-programmable interface to
constructing movies via an XML document spec. The characteristic
representation snafu there was the limited way in which "transition" worked
and how we couldn't extend that notion. When I worked at muvee, we found that
approach limiting and built an entire engine programmable via a scheme-like
embedded programming language we called muSE.

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...](https://srikumarks.github.io/muvee-style-
authoring/index.html)

[2] muSE the core open sourced language -
[https://github.com/srikumarks/muSE](https://github.com/srikumarks/muSE)

edit: muvee Reveal - [https://www.muvee.com/products/muvee-reveal-encore-
automatic...](https://www.muvee.com/products/muvee-reveal-encore-automatic-
video-editor)

disclosure: I used to work for muvee.

------
MrRadar
How does this compare to AVISynth?
[http://avisynth.nl/index.php/Main_Page](http://avisynth.nl/index.php/Main_Page)

~~~
jacobush
Or
[http://www.vapoursynth.com/doc/avisynthcomp.html](http://www.vapoursynth.com/doc/avisynthcomp.html)

------
fake-name
Holy crap it's terrible naming hour-o-clock.

If you're creating a project like this, _Use a unique name_. This is basically
going to be completely impossible to search for.

~~~
MisterTea
I can agree but there are plenty of lame programming language and project
names: Rust, Go , C, Julia, Salt, Chrome, etc. Then very generic company and
product names: Amazon, Windows, Apple, and so on. Plenty of boring, generic
names.

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.

------
dimatura
In the past I have used moviepy
([https://github.com/Zulko/moviepy](https://github.com/Zulko/moviepy)) to
programatically create videos in Python. At a very high level, it manages
creation of image frames that are ultimately fed into ffmpeg. It is (was?) a
bit buggy sometimes, but it gets the job done.

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.

------
spectramax
Why call it "Video" to be drowned by other search results and never to show up
on Google?

~~~
gvkhna
Would you make another suggestion? Video editing is low on keywords.

Full disclosure: Making an online video editor at
[https://www.mixcut.com](https://www.mixcut.com)

~~~
spectramax
Btw, Mixcut is a _great_ name.

"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 editor

~~~
gvkhna
Thank you!

------
jaimex2
How is this better than calling ffmpeg?

~~~
throw_m239339
it uses racket and ffmpeg under the hood apparently.

Let's not forget Javascript + Video web api + WebGL, insanely powerful when it
comes to real time video manipulation.

~~~
gvkhna
WebGL is good but has limitations around video editing, WebGPU and some
improvements by browsers will address a lot of these though in the coming
years.

Full disclosure: Making an online video editor at
[https://www.mixcut.com](https://www.mixcut.com) with web technologies.

------
BubRoss
How does this compare to ffmpeg, Nuke, davinci resolve, handbrake, AviSynth
etc. etc. This is like making a language called math that is made for doing
math. It's incredibly pretentious to name your project something that is
confusing, difficult to find, raises more questions than answers on what it
does, and definitely doesn't tell you why it exists.

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?

~~~
tobestobestobes
wrt why video editing needs automating: there are a host of repetitive tasks
in video editing that are very tedious to do with GUI editors. For instance,
labelling shots with shot number overlay text. At the moment you can get quick
results for this specific task using other tools such as FFmpeg. Personally,
the top item on my wishlist would be a video editing library (Python?) that
outputs to Final Cut Pro XML so that I could do final tweaks in a GUI-based
editor of my choice.

~~~
rpmisms
Soory for necro. Editors should know how to code. Lots of editing tools are
extensible in Python pretty easily. Sadly, those parts of my career didn't
intersect.

~~~
tobestobestobes
I don't find the Adobe Premiere SDK very intuitive or well documented, nor
does it support Python. Looks like DaVinci Resolve does support Python and it
seems well documented and intuitive. Thanks for the tip.

