add setup.py, automatic discovery for avconv/ffmpeg, add installation help to readme

This commit is contained in:
Martin Kaistra 2015-03-05 15:58:45 +01:00
parent 88105403e9
commit 38cfae0b4e
5 changed files with 64 additions and 4 deletions

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
__pycache__ __pycache__
settings.ini settings.ini
build/*

View File

@ -13,6 +13,25 @@ Dependencies
------------ ------------
You need Python 3, PyQt4, PIL (or Pillow), numpy and the program ffmpeg, which is used to read the audio and render the video. You need Python 3, PyQt4, PIL (or Pillow), numpy and the program ffmpeg, which is used to read the audio and render the video.
Installation
------------
### Manual installation on Ubuntu
* Get all the python stuff: `sudo apt-get install python3 python3-pyqt4 python3-pil python3-numpy`
* Get ffmpeg/avconv:
You can either use `avconv` from the standard repositories (package `libav-tools`) or get `ffmpeg` from the [website](http://ffmpeg.org/) or from a PPA (e.g. [https://launchpad.net/~jon-severinsson/+archive/ubuntu/ffmpeg](https://launchpad.net/~jon-severinsson/+archive/ubuntu/ffmpeg). The program does automatically detect if you don't have the ffmpeg binary and tries to use avconv instead.
Download audio-visualizer-python from this repository and run it with `python3 main.py`.
### Manual installation on Windows
* Download and install Python 3.4 from [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/)
* Download and install PyQt4 for Python 3.4 and Qt4 from [http://www.riverbankcomputing.co.uk/software/pyqt/download](http://www.riverbankcomputing.co.uk/software/pyqt/download)
* Download and install numpy from [http://www.scipy.org/scipylib/download.html](http://www.scipy.org/scipylib/download.html). There is an installer available, make sure to get the one for Python 3.4
* Download and install Pillow from [https://pypi.python.org/pypi/Pillow/2.7.0](https://pypi.python.org/pypi/Pillow/2.7.0)
* Download and install ffmpeg from [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html). You can use the static builds.
* Add ffmpeg to your system PATH environment variable.
Download audio-visualizer-python from this repository and run it from the command line with `C:\Python34\python.exe main.py`.
Example Example
------- -------
You can find an example video here: You can find an example video here:

14
core.py
View File

@ -1,4 +1,4 @@
import sys, io import sys, io, os
from PyQt4 import QtCore, QtGui, uic from PyQt4 import QtCore, QtGui, uic
from PyQt4.QtGui import QPainter, QColor from PyQt4.QtGui import QPainter, QColor
from os.path import expanduser from os.path import expanduser
@ -13,10 +13,18 @@ class Core():
self.lastBackgroundImage = "" self.lastBackgroundImage = ""
self._image = None self._image = None
self.FFMPEG_BIN = self.findFfmpeg()
def findFfmpeg(self):
if sys.platform == "win32": if sys.platform == "win32":
self.FFMPEG_BIN = "ffmpeg.exe" return "ffmpeg.exe"
else: else:
self.FFMPEG_BIN = "ffmpeg" # on Linux and Mac OS try:
with open(os.devnull, "w") as f:
sp.check_call(['ffmpeg', '-version'], stdout=f, stderr=f)
return "ffmpeg"
except:
return "avconv"
def drawBaseImage(self, backgroundImage, titleText, titleFont): def drawBaseImage(self, backgroundImage, titleText, titleFont):

View File

@ -109,6 +109,8 @@ class Main(QtCore.QObject):
self.drawPreview() self.drawPreview()
def createAudioVisualisation(self): def createAudioVisualisation(self):
ffmpeg_cmd = self.settings.value("ffmpeg_cmd", expanduser("~"))
self.videoThread = QtCore.QThread(self) self.videoThread = QtCore.QThread(self)
self.videoWorker = video_thread.Worker(self) self.videoWorker = video_thread.Worker(self)

30
setup.py Normal file
View File

@ -0,0 +1,30 @@
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [], excludes = [
"apport",
"apt",
"ctypes",
"curses",
"distutils",
"email",
"html",
"http",
"json",
"xmlrpc",
"nose"
], include_files = ["main.ui"])
import sys
base = 'Win32GUI' if sys.platform=='win32' else None
executables = [
Executable('main.py', base=base, targetName = 'audio-visualizer-python')
]
setup(name='audio-visualizer-python',
version = '1.0',
description = 'a little GUI tool to render visualization videos of audio files',
options = dict(build_exe = buildOptions),
executables = executables)