projectM-visualizer / projectm

projectM - Cross-platform Music Visualization Library. Open-source and Milkdrop-compatible.
https://discord.gg/mMrxAqaa3W
GNU Lesser General Public License v2.1
3.22k stars 364 forks source link

[$500 BOUNTY] Implement a cross-platform GStreamer plug-in for libprojectM #668

Open kblaschke opened 1 year ago

kblaschke commented 1 year ago

From @revmischa on the projectM Discord Server, 10.11.2022 20:18:

If someone can create a GStreamer plug-in that will enable any sort of custom media pipeline application for projectM. E.g. turn an audio file into a video, create a video from a live stream, overlay or mix visualization on existing video, easy automation, etc.

I'll put a bounty of $500 for whoever lands a working GStreamer plug-in. Paid out of our OpenCollective.

https://gstreamer.freedesktop.org/documentation/plugin-development/index.html?gi-language=c

A few additions/clarifications by me (@kblaschke):

The */x-raw types would probably be the most appropriate input/output formats as they don't require any de-/encoding overhead in the projectM plug-in and has no compression artifacts. While having the highest bit rate, users can put an audio decoder before and a video compressor plug-in after projectM in the GStreamer filter chain if needed.

revmischa commented 1 year ago

I would encourage also instead of C to use rust

GStreamer supports rust (docs) and there are many examples of rust plugins

And there are rust bindings for projectM which provide an easier and safer interface to projectM

hartwork commented 1 year ago

Sounds similar to what the gstreamer libvisual integration at https://github.com/GStreamer/gst-plugins-base/tree/master/ext/libvisual is doing. Not sure if that's the latest source.

hashFactory commented 10 months ago

For anyone who's interested I have a preliminary working version (on linux at least) here! https://github.com/hashFactory/gst-projectm/

luzpaz commented 4 months ago

@hashFactory awesome! Any known issues to look-out for ?

Blaquewithaq commented 4 months ago

This bounty has now been awarded!

You can find the source code here for the official gst-projectm plugin: https://github.com/projectM-visualizer/gst-projectm

actionless commented 3 months ago

i remember gstreamer plugin was mentioned in the context that it will allow to "convert" mp3 to a video:

https://github.com/projectM-visualizer/projectm/issues/205 https://github.com/projectM-visualizer/projectm/pull/207#issuecomment-543276653

how this could be done now, when the gstreamer support is already implemented?