Damian Brunold

Videokonvertierung

2011-01-08 13:31 Programmieren, Python, Video

Ich habe ein kleines Python Programm geschrieben, das mir meine Videos von AVI und MPG nach MP4/h264/aac konvertiert. Es kann jederzeit unterbrochen werden und fängt beim nächsten Start wieder am "richtigen" Ort an.

Hier der Code:

#!/usr/bin/env python3

import os
import subprocess

from os.path import exists, join, splitext

def convert():
    for filename in os.listdir("."):
        base, ext = splitext(filename.lower())
        if not ext in [".avi", ".mpg", ".mpeg"]:
            continue
        if exists(join("mp4", base + ".mp4")) and exists(join("done", filename)):
            continue
        print("converting %s..." % filename)
        subprocess.call(["ffmpeg", 
                         "-y",
                         "-i", filename, 
                         "-acodec", "libfaac", "-ab", "128k", "-ac", "2", 
                         "-vcodec", "libx264", "-vpre", "slow", "-crf", "22", 
                         "-threads", "0", 
                         join("mp4", base + "_temp.mp4")])
        print("faststart...")
        subprocess.call(["qt-faststart", 
                         join("mp4", base + "_temp.mp4"),
                         join("mp4", base + ".mp4")])
        os.remove(join("mp4", base + "_temp.mp4"))
        os.rename(filename, join("done", filename))
        print("done")


if __name__ == "__main__":
    convert()

Im Wentlichen ruft es einfach in der richtigen Reihenfolge ffmpeg und qt-faststart auf und schaut, dass alles schön geordnet abläuft. Nice...