Audio Visualizer Python
We need a good name that is not as generic as "audio-visualizer-python"!
This is a little GUI tool which creates an audio visualization video from an input audio file. Different components can be added and layered to change the resulting video and add images, videos, gradients, text, etc. Encoding options can be changed with a variety of different output containers.
The program works on Linux, macOS, and Windows. If you encounter problems running it or have other bug reports or features that you wish to see implemented, please fork the project and submit a pull request and/or file an issue on this project.
Screenshots & Videos
A video created by this app
Video demonstration of the app features
Installation
Installation on Ubuntu 22.04
- Install dependencies:
sudo apt install ffmpeg python3-pip python3-pyqt5
- You may wish to install the app within an isolated Python environment so it doesn't affect other Python packages on your system. You can do this easily using Pipx: replace
python3-pip
withpipx
in the apt command above, then usepipx
instead ofpip
to automatially install Python apps in isolated environments.
- You may wish to install the app within an isolated Python environment so it doesn't affect other Python packages on your system. You can do this easily using Pipx: replace
- Download this repo and run
pip install .
in this directory (or usepipx
for isolation) - Run the program with
avp
from terminal - Or try double-clicking the graphical shortcut ("run" or "execute" the file if asked)
Installation on Windows
- Install Python from the Windows Store
- Add Python to your system PATH (it should ask during the installation process)
- Download this repo (extract from zip if needed)
- Download and install FFmpeg. Use the GPL-licensed static builds.
- Add FFmpeg to the system PATH as well (program will then work anywhere)
- Alternatively, copy ffmpeg.exe into the folder that you want to run the program within
- Open command prompt,
cd
into the repo directory, and run:pip install .
- Now run
avp
orpython -m avp
from a command prompt window to start the app
Manual installation on macOS
- [Outdated]: No one has updated these instructions for a while.
- Install Homebrew
- Use the following commands to install the needed dependencies:
brew install python3
brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-libass --with-libquvi --with-libvorbis --with-libvpx --with-opus --with-x265
brew install qt
brew install sip --with-python3
brew install pyqt --with-python3
pip3 install --upgrade pip
- Download this repository and install it using Pip:
pip3 install .
(or usepipx
for isolation) - Start the app with
avp
orpython3 -m avp
Keyboard Shortcuts
Key Combo | Effect |
---|---|
Ctrl+S | Save Current Project |
Ctrl+A | Save Project As... |
Ctrl+O | Open Project |
Ctrl+N | New Project (prompts to save current project) |
Ctrl+Z | Undo |
Ctrl+Shift+Z or Ctrl+Y | Redo |
Ctrl+T or Insert | Add Component |
Ctrl+R or Delete | Remove Component |
Ctrl+Space | Focus Component List |
Ctrl+Shift+S | Save Component Preset |
Ctrl+Shift+C | Remove Preset from Component |
Ctrl+Up | Move Selected Component Up |
Ctrl+Down | Move Selected Component Down |
Ctrl+Home | Move Selected Component to Top |
Ctrl+End | Move Selected Component to Bottom |
Ctrl+Shift+U | Open Undo History |
Ctrl+Shift+F | Show FFmpeg Command |
Commandline Mode
Projects can be created with the GUI then loaded from the commandline for easy automation of video production. Some components have commandline options for extra customization, and you can save "presets" with settings to load if the commandline option doesn't exist.
Example/test command
- Create a video with a grey "classic visualizer", background image, and text:
avp -c 0 image path=src/tests/data/test.jpg -c 1 classic color=180,180,180 -c 2 text "title=Episode 371" -i src/tests/data/test.ogg -o output.mp4
- See more about commandline mode in the wiki!
Developer Information
Known Working Versions of Dependencies
- Python 3.10
- FFmpeg 4.4.1
- PyQt5 (Qt v5.15.3)
- Pillow 9.1.0
- NumPy 1.22.3
Getting Faster Export Times
- Pillow-SIMD may be used as a drop-in replacement for Pillow if you desire faster video export times, but it must be compiled from source. For help installing dependencies to compile Pillow-SIMD, see the Pillow installation guide. Then add the
-SIMD
suffix intosetup.py
and install as usual.
Developing a New Component
- Information for developing a component is in our wiki: How a Component Works
- File an issue on GitHub if you need help fitting your visualizer into our component system; we would be happy to collaborate
License
Source code of audio-visualizer-python is licensed under the MIT license.
Some dependencies of this application are under the GPL license. When packaged with these dependencies, audio-visualizer-python may also be under the terms of this GPL license.