Advertisement
Guest User

Multi Process Video to MP3 converter

a guest
Feb 19th, 2013
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.75 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf8 -*-
  3. # Dieses Script konvertiert alle im gegenwärtigen Verzeichnis gefundenen Mediadateien
  4. # in MP3 Dateien. Also beispielsweise Youtube Downloads.
  5.  
  6. # Importiere OS Modul
  7. import os
  8.  
  9. # Modul fuer reguläre Ausdruecke
  10. import re
  11.  
  12. # Modul für Multiprocessing Funktionen importieren
  13. import multiprocessing
  14.  
  15. # Queue für gefundene Mediadateien initialisieren
  16. q = multiprocessing.Queue()
  17.  
  18. # Funktion zum Encoden von MP3 Dateien
  19. def encodeAudio ():
  20.   while not q.empty():
  21.     # Nächsten Eintrag der Datei-Queue holen
  22.     sourcefile = q.get()
  23.     print sourcefile
  24.     targetfile = sourcefile[:-3] + 'mp3'
  25.     commandline = "ffmpeg -i \"" + sourcefile  +  "\" -acodec libmp3lame -ac 2 -ab 192k -vn -y \""+ targetfile + "\""
  26.     os.popen (commandline)
  27.  
  28. # Herausfinden wie viele CPUs / Kerne der Host hat
  29. cores=multiprocessing.cpu_count()
  30.  
  31. # Definition der unterstützten Dateiendungen
  32. extensions = ['avi','flv', 'mp4', 'wav', 'ogg', 'mpg', 'aac', 'flac' ]
  33.  
  34. # Vergleichspattern "zusammenbauen"
  35. pattern = ''
  36.  
  37. for n in extensions:
  38.   # Trennzeichen anhängen, falls bereits pattern definiert sind
  39.   if len(pattern) > 0: pattern += '|'
  40.   pattern = pattern + n  + '|' + n.upper()
  41.  
  42. # RegEx für gesuchte Dateiendungen zusammenbauen
  43. expr = re.compile (".*\.(" + pattern  + ")$")
  44.  
  45. # Alle Dateien der aktuell bearbeiteten Verzeichnis einlesen
  46. files = os.listdir('.')  
  47.  
  48. # Nur Mediadateien bearbeiten
  49. for n in files:
  50.   # Gefundene Mediadateien der Verarbeitungsqueue hinzufügen
  51.   if expr.match (n):
  52.     q.put(n)
  53.     print (n)
  54. # Spawnen entsprechend vieler Prozesse für das parallele Audioencoding
  55. for i in range (cores):
  56.   process = multiprocessing.Process(target=encodeAudio, args=())
  57.   process.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement