In meinem Fall hatte ich eine ganze Reihe an Videos, hauptsächlich Musik-Videos, die ich auf meinem Handy haben wollte, um sie mir unterwegs anzuhören. Aber das Bild störte halt, weil es die Dateien so groß macht und ich nur an der Audiospur interessiert war. Insgesamt waren es ein paar hundert Dateien in einer komplexen Ordnerstruktur. Also habe ich ein Tool geschrieben, dass einen Ordner rekursiv einliest, aus jeder Datei den Audiostream extrahiert und die komplette Ordnerstruktur an einem anderen Ort wiederherstellt, nur diesmal mit Audiodateien:
Code: Alles auswählen
import os
import subprocess
ffmpegPath="ffmpeg.exe"
InFolder="D:/Videos/Musik"
OutFolder="D:/Musik"
skipped=list()
for root, dirs, files in os.walk(InFolder):
from os.path import join, relpath
# show the current folder that we are processing
print("\n\n\n Starting: ", root, "\n\n\n")
for name in files:
# determine the new filename
InFile=join(root, name)
rel=relpath(join(root, name), InFolder)
OutLocation=join(OutFolder, rel)
basename, ext = os.path.splitext(OutLocation)
OutFile=basename+".mp3"
# create a new folder, if needed
p, n=os.path.split(OutFile)
if not os.path.exists(p):
os.makedirs(p)
# and generate the file
print(InFile)
if os.path.isfile(OutFile):
print("!!! File already exists, skipping")
skipped.append((InFile, OutFile))
else:
subprocess.call([ffmpegPath, "-y", "-i", InFile, OutFile])
print("Wrote ", OutFile)
print("\n\nAll done!\n\n")
print(len(skipped), "files were skipped:")
for (i, o) in skipped:
print('- "', i, '"', "not converted to ", '"', o, '"')
Das sind einfach so die Moment, in denen ich richtig zufrieden bin. Wenn all mein Wissen und Rumbastelei nicht nur ein Hobby ist, sondern tatsächliche, sinnvolle Probleme löst :D