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/
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.
I love MoviePy! It's great when you have a lot of bits of audio, video, and text you need to glue together. I have used it to create some GPT-2-generated Peppa Pig cartoons (https://www.youtube.com/watch?v=1TEwCA3KDtg) -- stick the image, text, and speech together (aligned to the speech length), concat all the clips, and finally apply some fancy ffmpeg effects.
Here's my take: Don't use "import-star" in library code. Like you say, it obscures where elements of the namespace came from.
When using Python interactively, esp. if the interactive session is to be thrown away at the end, then import-star can be fine and can be a good time-saver. Video editing is a great example of when this is appropriate. See also manim. Other examples might be one-off html parsing or one-off data manipulation tasks.
Similar to "import-star" is multiple inheritance. Just like import-star, multiple inheritance can make it ambiguous where methods come from, and imo it should similarly be avoided by default unless there's a compelling reason to use it.
I don’t import-star in the console or notebooks (PyCharm, specifically) because autocomplete works better with the module to scope the search. So I end up doing a lot of aliased imports like “import numpy as np”
No, you’re right. It’s like picking your nose. Don’t ever do it. I don’t ever do it.
Unless no one can see.
Somewhat more seriously, don’t do it in anything other than one-off code once you’ve experimented enough to get the result you want unless you aren’t scared of the people who will yell at you about circular imports.
> I've always thought "from lib import star" is somewhat of a anti-pattern
Like patterns, anti-patterns are context sensitive. “from lib import *” is usually an anti-pattern, but doing it exactly once in a source file, especially a short one, and especially for demonstration code for the library so imported, is not a problem.
But if you do it two or more times in the same source file...
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.
Any non-trivial python module is going to be broken up into multiple files and have an __init__.py which you can explicitly define what's imported and exposed. You can hoist a single file module into a folder-based module if you need direct control and don't want to split it apart into multiple files yet too.
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?
Hi friend, have you tought of hiring a professional? I have used ImageRevolver, check them here https://imagerevolver.com/ , they offer services like Cinematography, Live Streaming, Video editing, 3D Modeling and more, I know you're asking how to use python for that but maybe if it's something urgent or you don't want to break your head give them a try!
I happened to be looking for a programming-based video editor last night. It's hard to reuse patterns in conventional video editors. MoviePy is great but it looks like it's lacking maintainers and many wanted features are not available, such as GPU accerlation.
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.
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.
I'm creating a web version of flash, the animation software, I was considering adding video support to it, so people could import video clips and make animations on top of it. Right now I'm exporting movies using the canvas capture stream, but I'm considering using ffmpeg (js) also. Cool project, I'm gonna star it so I could use it later.