Live data from Hacker News

Programmatic Video Editing with Python

github.com

11–20 of 44 posts

Re: Programmatic Video Editing with Python

#11
post #3

What are some good / mature / performant libraries to programmatically achieve compositions of text, audio and image files, perhaps with a timeline in which these can be declared at various timestamps, and the output is a video file? Does this one do it?

Essentially this repo is a robust wrapper for FFMPEG, which is what most programmatic video editing tools use in one way or another.

Re: Programmatic Video Editing with Python

#12
post #3

What are some good / mature / performant libraries to programmatically achieve compositions of text, audio and image files, perhaps with a timeline in which these can be declared at various timestamps, and the output is a video file? Does this one do it?

AviSynth+ [0] is one of the most mature libraries around. It's performant enough to run live (usually), though I don't imagine it's heavily optimised.

[0]: https://avs-plus.net/

Re: Programmatic Video Editing with Python

#13
post #4

this looks great. I normally use Premiere Elements but the overhead for short compositing is too high and there's little automation (at least I don't know how) so something like this is great. The example of compositing using regions found with a template line drawing is intriguing.

If you move to Premiere Pro and After Effects, you can automate almost everything that you might want to edit and or composite.

Both have their own scripting language based on JavaScript and After Effects also uses plain JS.

There are also a number of paid plugins which provide varying levels of no-code automation. For example there is one which connects to Google Sheets and creates a new AE comp from each spreadsheet row, replacing text, images from URLs, changing dimensions of objects, etc. all based on the values of the spreadsheet cells.

Re: Programmatic Video Editing with Python

#15

Hm could this be used to make a clone of https://pirsonal.com/ ? Have video templates then render them on the cloud filling the template placeholders with images, text, etc.

If you are comfortable with javascript instead of python, I think Remotion [0] could get you to something like that pretty quickly.

It‘s more data driven motion graphics instead of non-linear video editing, but it looks like that‘s what pirsonal is doing pretty much.

[0] https://www.remotion.dev

Re: Programmatic Video Editing with Python

#16

I've always thought "from lib import star" is somewhat of a anti-pattern. Personally I think that makes sense - because sometimes when I read code, I just have no idea where something comes from. But I've seen import star everywhere, couple of examples: Doc for this product FastAI's course Bing ads code base So I'm guessing it is more of accepted than I expected? What does HackerNews think?

Side question: how do you prevent import statements from being imported by "from lib import star"? (Without explicitly mentioning all the stuff that is not import statements).

For example, this is mymod.py:

    import numpy as np

    def f(x): return 2*x
And here it is imported:

    from mymod import *

    f(10) # Works as expected.
    np.sum([10, 20]) # Works, but shouldn't work.

Re: Programmatic Video Editing with Python

#17
post #16

I've always thought "from lib import star" is somewhat of a anti-pattern. Personally I think that makes sense - because sometimes when I read code, I just have no idea where something comes from. But I've seen import star everywhere, couple of examples: Doc for this product FastAI's course Bing ads code base So I'm guessing it is more of accepted than I expected? What does HackerNews think?

Side question: how do you prevent import statements from being imported by "from lib import star"? (Without explicitly mentioning all the stuff that is not import statements). For example, this is mymod.py: import numpy as np def f(x): return 2*x And here it is imported: from mymod import * f(10) # Works as expected. np.sum([10, 20]) # Works, but shouldn't work.

The best you can do (without doing crazy introspection) is to set `__all__` in `mymod`. It still requires listing everything you want to be exported from `mymod`, but at least you only need to do it once.

Docs: https://docs.python.org/3/tutorial/modules.html#importing-fr...

Re: Programmatic Video Editing with Python

#18
post #16

Earlier quoted context omitted.

Side question: how do you prevent import statements from being imported by "from lib import star"? (Without explicitly mentioning all the stuff that is not import statements). For example, this is mymod.py: import numpy as np def f(x): return 2*x And here it is imported: from mymod import * f(10) # Works as expected. np.sum([10, 20]) # Works, but shouldn't work.

The best you can do (without doing crazy introspection) is to set `__all__` in `mymod`. It still requires listing everything you want to be exported from `mymod`, but at least you only need to do it once. Docs: https://docs.python.org/3/tutorial/modules.html#importing-fr...

Linters will also complain about importing stuff that's not listed in a module's __all__, so it's overall good API hygiene to have one.

Re: Programmatic Video Editing with Python

#19
post #16

I've always thought "from lib import star" is somewhat of a anti-pattern. Personally I think that makes sense - because sometimes when I read code, I just have no idea where something comes from. But I've seen import star everywhere, couple of examples: Doc for this product FastAI's course Bing ads code base So I'm guessing it is more of accepted than I expected? What does HackerNews think?

Side question: how do you prevent import statements from being imported by "from lib import star"? (Without explicitly mentioning all the stuff that is not import statements). For example, this is mymod.py: import numpy as np def f(x): return 2*x And here it is imported: from mymod import * f(10) # Works as expected. np.sum([10, 20]) # Works, but shouldn't work.

Python modules can define a list named `__all__` which of present will define the behaviour of importing “everything”.

The `from x import y` syntax is unaffected

Re: Programmatic Video Editing with Python

#20
If you're interested in high performance video processing with Python and want something more than just a fancy ffmpeg wrapper, then I can highly recommend checking out Vapoursynth: https://www.vapoursynth.com/

It's been around for ~9 years and has a relatively large community around it, most visibly found on the Doom9 forums: http://forum.doom9.org/forumdisplay.php?f=82

I'm personally still mostly using Avisynth these days since it's what I'm most familiar with, but I've also used Vapoursynth and it's definitely the one to learn if you want to get into programmatic video processing these days.

Post reply on HN