22. 11. 2010

Konverze videa pro PS3 - II

V předchozím příspěvku jsem uvedl návod, jakým způsobem zkonvertovat *.mov video do formátu *.mp4, které jde přehrát na PS3. Abych nemusel pracně konvertovat jedno video po druhém, napsal jsem si na to skript v jazyce Python. Tento skript načte seznam *.mov souborů a zjistí, které z nich už jsou zkonvertovány do *.mp4. Ten zbytek zkonvertuje. Může se stát, že by někdo mohl potřebovat jeden video soubor zkonvertovat víckrát, třeba jednou pro PS3 a jednou pro iPhone nebo jiný mobil. Skript je na to připraven a je možno do něj přidat jednoduše libovolný počet konverzí. Jednotlivé konverze se rozlišují příponou zkonvertovaného souboru. Skript není blbuvzdorný apředpokládá se, že jeho uživatel alespoň trochu umí zacházet s Pythonem  a příkazovým řádkem.

Ve skriptu se předpokládá (je nastaveno), že *.mov videa jsou uložena v adresáři "/home/USER/mov-videa" a zkonvertované *.mp4 soubory jsou v podadresářích hq20 a llm20. Přípony souborů jsou pak .hq20.mp4 a .llm20.mp4.

==================
#!/bin/env python

import os
from   os.path import join, isfile, dirname, basename

# NASTAVENI
PATH   = "/home/USER/mov-videa"

CNVRTS = [] # sady parametru pro jednotlive konverze

cnvrt         = {}
cnvrt['path'] = join(PATH, "hq20")
cnvrt['ext']  = '.hq20.mp4'
cnvrt['cmd']  = "ffmpeg -i '%s' \
                 -acodec libfaac -ac 2 -ab 192k \
                 -vcodec libx264 -vpre libx264-hq -crf 20 \
                 -threads 0 '%s'"
CNVRTS.append(cnvrt)

cnvrt         = {}
cnvrt['path'] = join(PATH, "llm20")
cnvrt['ext']  = '.llm20.mp4'
cnvrt['cmd']  = "ffmpeg -i '%s' \
                 -acodec libfaac -ac 2 -ab 192k \
                 -vcodec libx264 -vpre libx264-lossless_max -crf 20 \
                 -threads 0 '%s'"
CNVRTS.append(cnvrt)

# FUNKCE
def getExtFiles(path, ext):
    """ Vraci seznam souboru s uvedenou priponou. """
    movFiles = []
    allFiles = os.listdir(path)
   
    for filename in allFiles:
        if  not isfile(join(path, filename)):
            continue
        if  filename.lower()[-len(ext):] != ext:
            continue
        movFiles.append(join(path, filename))
       
    return movFiles
   
def main():
    movFiles = getExtFiles(PATH, '.mov')
    cmds     = []
    for cnvrt in CNVRTS:
        newFiles = []

        print "\n-- Seznam " + cnvrt['ext'] + " souboru, ktere se budou vytvaret:"
        mp4Files = getExtFiles(cnvrt['path'], '.mp4')
       
        # vytvoreni seznamu souboru, ktere jeste neexistuji
        for movFile in movFiles:
            newFile = join(cnvrt['path'], basename(movFile) + cnvrt['ext'])
            if not newFile in mp4Files:
                newFiles.append([movFile, newFile])
               
        # vytvoreni seznamu prikazu pro vytvoreni novych souboru
        for newFile in newFiles:
            cmd = cnvrt['cmd']%(newFile[0], newFile[1])
            cmds.append(cmd)
            print newFile[1]
    
    # postupne spusteni jednotlivych prikazu   
    for cmd in cmds:
        pass
        os.system(cmd)
   
# START PROGRAMU       
main()

Žádné komentáře:

Okomentovat