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__
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.
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
-------
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.QtGui import QPainter, QColor
from os.path import expanduser
@ -13,10 +13,18 @@ class Core():
self.lastBackgroundImage = ""
self._image = None
self.FFMPEG_BIN = self.findFfmpeg()
def findFfmpeg(self):
if sys.platform == "win32":
self.FFMPEG_BIN = "ffmpeg.exe"
return "ffmpeg.exe"
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):

View File

@ -109,6 +109,8 @@ class Main(QtCore.QObject):
self.drawPreview()
def createAudioVisualisation(self):
ffmpeg_cmd = self.settings.value("ffmpeg_cmd", expanduser("~"))
self.videoThread = QtCore.QThread(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)