logo
Menu  Menu
Home





Downloads

 
Campo Login

 





 
Aiutiamo il PAM a combattere la fame nel mondo.
Con 35 euro all'anno permetti ad un bambino di mangiare e andare a scuola.
Pensaci.

 
Visite: 8629
Statistiche

 

Section 
#!/usr/bin/python ####################################### # pyPSPenc # # Script di codifica video per PSP # # Sakya, 2006,2007 # ####################################### import sys import os import _random from time import localtime from ConfigParser import ConfigParser from subprocess import Popen, PIPE ffmpegCommand = "ffmpeg" pmp_muxerCommand = "pmp_muxer" def caricaConfig(pFileName): #Carico una configurazione: global input, titolo, encType, fps, dim, volume, aRate, vBitrate, aBitrate, passate, userQual, qual, extra, crop, output, outputExt, ffmpegCommand, pmp_muxerCommand if pFileName[0:1] == "\"" \ and pFileName[-1:] == "\"": pFileName = pFileName[1:-1] config = ConfigParser() config.read(pFileName) log.write("Carico configurazione: " + pFileName + "\n") input = config.get("MAIN", "input") titolo = config.get("MAIN", "titolo") encType = config.get("MAIN", "encType") fps = config.get("MAIN", "fps") dim = config.get("MAIN", "dim") volume = config.get("MAIN", "volume") aRate = config.get("MAIN", "aRate") vBitrate = config.get("MAIN", "vBitrate") aBitrate = config.get("MAIN", "aBitrate") passate = config.get("MAIN", "passate") userQual = config.get("MAIN", "qual") if userQual == "Q": qual = quality elif userQual == "E": qual = quality + " " + extraQuality else: qual = "" crop = config.get("MAIN", "crop") extra = config.get("MAIN", "extra") output = config.get("MAIN", "output") outputExt = config.get("MAIN", "outputExt") ffmpegCommand = config.get("MAIN", "ffmpeg") pmp_muxerCommand = config.get("MAIN", "pmp_muxer") #Controllo le globals: try: sys.argv.append(config) if batch: sys.argv.append("-BATCH") except NameError: batch = False version = "1.0.6" log = file(os.path.dirname(__file__) + "/pyPSPenc.log", "w") PMPcmd = [ "ffmpeg -y -i \"#INPUT#\" #EXTRA# -vol #VOL# -acodec mp3 -ac 2 -ar #ARATE# -ab #ABITRATE#kb pmptemp.mp3", "ffmpeg -y -i \"#INPUT#\" #EXTRA# -vcodec mpeg4 -s #SIZE# -b #VBITRATE#kb -g 250 -an -mbd 2 -r #FPS# #QUALITY# -pass 1 pmptemp.avi", "ffmpeg -y -i \"#INPUT#\" #EXTRA# -vcodec mpeg4 -s #SIZE# -b #VBITRATE#kb -g 250 -an -mbd 2 -r #FPS# #QUALITY# -pass 2 pmptemp.avi", "pmp_muxer -v pmptemp.avi -a pmptemp.mp3 -o \"#OUTPUT#\"" ] MP4cmd = [ "ffmpeg -y -i \"#INPUT#\" -title \"#TITLE#\" #EXTRA# -vcodec mpeg4 -s #SIZE# -b #VBITRATE#kb -g 250 -vol #VOL# -acodec aac -ac 2 -ar #ARATE# -ab #ABITRATE#kb -mbd 2 -r #FPS# #QUALITY# -pass 1 -f psp \"#OUTPUT#\"", "ffmpeg -y -i \"#INPUT#\" -title \"#TITLE#\" #EXTRA# -vcodec mpeg4 -s #SIZE# -b #VBITRATE#kb -g 250 -vol #VOL# -acodec aac -ac 2 -ar #ARATE# -ab #ABITRATE#kb -mbd 2 -r #FPS# #QUALITY# -pass 2 -f psp \"#OUTPUT#\"" ] AVCcmd = [ "ffmpeg -y -i \"#INPUT#\" -title \"#TITLE#\" #EXTRA# -vcodec h264 -s #SIZE# -coder 1 -b #VBITRATE#kb -g 250 -f psp -vol #VOL# -acodec aac -ac 2 -ar #ARATE# -ab #ABITRATE#kb -mbd 2 -r #FPS# #QUALITY# -pass 1 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags loop \"#OUTPUT#\"", "ffmpeg -y -i \"#INPUT#\" -title \"#TITLE#\" #EXTRA# -vcodec h264 -s #SIZE# -coder 1 -b #VBITRATE#kb -g 250 -f psp -vol #VOL# -acodec aac -ac 2 -ar #ARATE# -ab #ABITRATE#kb -mbd 2 -r #FPS# #QUALITY# -pass 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags loop \"#OUTPUT#\"" ] quality = "-cmp 2 -subcmp 2 -qcomp 1 -subq 6 -qns 3 -trell 2" extraQuality = "-inter_matrix 8,14,20,28,38,45,56,65,14,20,26,37,44,56,64,70,20,26,36,43,55,64,70,75,28,37,43,54,63,69,74,78,38,44,55,63,69,73,77,80,45,56,64,69,73,76,79,82,56,64,70,74,77,79,81,85,65,70,75,78,80,82,85,90 -intra_matrix 17,18,20,22,24,26,28,30,18,20,22,24,26,28,30,34,20,22,24,26,29,30,34,40,22,24,26,30,32,36,44,50,24,26,29,32,38,48,55,60,26,28,30,36,48,58,74,80,28,30,34,44,55,74,90,100,30,34,40,50,60,80,100,128" thmCmd = "ffmpeg -y -i \"#INPUT#\" -f image2 -ss 5 -vframes 1 -s 160x120 -an \"#OUTPUT#\"" lFPS = ["15000/1001", "30000/1001"] lDim = ["320x240", "320x176", "368x208", "384x160", "400x192", "416x176", "480x160", \ "360x272", "480x272"] if not batch: print "+" + "-" * 76 + "+" print "|" + ("pyPSPenc V." + version).center(76) + "|" print "+" + "-" * 76 + "+" print "|" + "script per codificare video per PSP".center(76) + "|" print "|" + "by Sakya 2006".center(76) + "|" print "|" + "http://sakya.altervista.org".center(76) + "|" print "+" + "-" * 76 + "+" caricato = False #Carico le impostazioni se devo: if len(sys.argv) > 1: caricaConfig(sys.argv[1]) caricato = True batch = False if len(sys.argv) > 2 and sys.argv[2].upper() == "-BATCH": batch = True else: #Chiedo se devo caricare le impostazioni: print " Configurazione da caricare" print " --------------------------" risp = None while not risp: risp = raw_input(" Nome file da caricare (INVIO per non caricare)? ") if len(risp) > 0: if risp[-4:] != ".cfg": risp += ".cfg" #Controllo che il file esista: if os.path.exists(risp): caricaConfig(risp) caricato = True else: print " Impossibile trovare il file " + risp print "" risp = None else: break if not caricato: #File di input: print "" print " Selezione file di input" print " -----------------------" input = None while not input: input = raw_input(" Nome file di input: ") #Controllo che esista: if len(input) > 0 and not os.path.exists(input): print " Impossibile trovare il file " + input print "" input = None #Titolo: titolo = None print "" print " Selezione titolo del video" print " --------------------------" while not titolo: titolo = raw_input(" Titolo: ") #Tipo di codifica: print "" print " Selezione tipo di codifica" print " --------------------------" print " M. MP4 per firmware >= 1.50" print " A. AVC per firmware >= 2.00" encType = None while encType not in ["M", "A"]: encType = raw_input(" Scegli il tipo di codifica: ") encType = encType.upper() #FPS: fps = None print "" print " Selezione FPS" print " -------------" print " 1. 14.985" print " 2. 29.970" while fps not in ["1", "2"]: fps = raw_input(" Scegli FPS di output: ") fps = lFPS[int(fps) - 1] #Dimensioni: dim = None print "" print " Selezione dimensioni di output" print " ------------------------------" print " 1. 320x240 4:3 (firmware >= 1.50)" print " 2. 320x176 1.85:1 (firmware >= 2.00)" print " 3. 368x208 16:9 (firmware >= 2.00)" print " 4. 384x160 2.40:1 (firmware >= 2.00)" print " 5. 400x192 (firmware >= 2.00)" print " 6. 416x176 2.35:1 (firmware >= 2.00)" print " 7. 480x160 (firmware >= 2.00)" print " 8. 360x272 4:3 (CF >= 3.03OE)" print " 9. 480x272 16:9 (CF >= 3.03OE)" while dim not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]: dim = raw_input(" Scegli dimensione di output: ") dim = lDim[int(dim) - 1] #Bitrate video: vBitrate = None print "" print " Selezione bitrate video" print " -----------------------" while not vBitrate: tBit = raw_input(" Bitrate video: ") try: vBitrate = int(tBit) if vBitrate > 768: print " Il bitrate video deve essere massimo di 768!" vBitrate = None except: print " Bitrate non valido!" print "" #Audio rate: if encType == "A": aRate = "48000" else: aRate = "24000" #Bitrate audio: aBitrate = None print "" print " Selezione bitrate audio" print " -----------------------" while not aBitrate: tBit = raw_input(" Bitrate audio: ") try: aBitrate = int(tBit) except: print " Bitrate non valido!" print "" #Volume audio: volume = None print "" print " Selezione volume audio" print " -----------------------" while not volume: tVolume = raw_input(" Volume audio (256=Normale): ") try: volume = int(tVolume) except: print " Volume non valido!" print "" #Nome file di output: try: f = file("pyPSPenc.dat", "r") lastNumber = int(f.readline().replace("\n","")) + 1 f.close() except IOError: lastNumber = 1 if encType == "M": output = "M4V" + str(lastNumber).zfill(5) elif encType == "A": output = "MAQ" + str(lastNumber).zfill(5) outputExt = "MP4" #1pass/2pass: qual = None print "" print " Selezione il numero di passate" print " -----------------------" passate = "" while not passate in ["1", "2"]: passate = raw_input(" 1 passata o 2 passate (1/2): ") #Qualita' o velocita': qual = None print "" print " Selezione tipo codifica" print " -----------------------" while not qual in ["V", "Q", "E"]: qual = raw_input(" Codifica Veloce, di Qualita' o Extra (V/Q/E): ") qual = qual.upper() userQual = qual if qual == "Q": qual = quality elif qual == "E": qual = quality + " " + extraQuality else: qual = "" #Parametri extra per ffmpeg: extra = "" crop = "" print "" print " Selezione parametri extra" print " -------------------------" print " Esempi:" print " -ss 10 -t 60 : codifica dal secondo 10 per 60 secondi" print " -croptop 20 -cropbottom 20 : crop sopra e sotto di 20 pixel" print " -padtop 20 -padbottom 20 : 20 pixel aggiunti sopra e sotto" extra = raw_input(" Inserire parametri extra per ffmpeg: ") #Riepilogo: if not batch: print "" print " Riepilogo impostazioni" print " ----------------------" print " File di input : " + input print " Titolo : " + titolo if encType == "M": print " Codifica : " + "MP4" else: print " Codifica : " + "AVC" print " FPS : " + fps print " Dimensioni : " + dim print " Volume Audio : " + str(volume) print " Frequenza Audio : " + str(aRate) print " Bitrate Video : " + str(vBitrate) print " Audio : " + str(aBitrate) print " Pass (1/2) : " + passate if userQual == "E": print " Tipo di codifica : " + "Extra" elif userQual == "Q": print " Tipo di codifica : " + "Alta qualita'" else: print " Tipo di codifica : " + "Veloce" print " Paramteri extra : " + extra print " File di output : " + output + "." + outputExt print "" risp = None while risp not in ["S", "N"]: risp = raw_input(" Procedere con la codifica (S/N)? ") risp = risp.upper() else: risp = "S" if risp == "S": if not batch: print "+" + "-" * 76 + "+" print "|" + "Inizio Codifica".center(76) + "|" print "+" + "-" * 76 + "+" inizio = localtime() #Preparo il comando: if encType == "A": cmd = AVCcmd elif encType == "M": cmd = MP4cmd elif encType == "P": cmd = PMPcmd #Controllo le passate: if passate == "1": cmd = [cmd[0].replace("-pass 1", "").replace("-passlogfile #PASSFILE#", "")] for i, tCmd in enumerate(cmd): tCmd = tCmd.replace("ffmpeg", "\"" + ffmpegCommand + "\"") tCmd = tCmd.replace("pmp_muxer", "\"" + pmp_muxerCommand + "\"") tCmd = tCmd.replace("#INPUT#", input) tCmd = tCmd.replace("#TITLE#", titolo) tCmd = tCmd.replace("#FPS#", fps) tCmd = tCmd.replace("#SIZE#", dim) tCmd = tCmd.replace("#VBITRATE#", str(vBitrate)) tCmd = tCmd.replace("#ARATE#", aRate) tCmd = tCmd.replace("#ABITRATE#", str(aBitrate)) tCmd = tCmd.replace("#VOL#", str(volume)) tCmd = tCmd.replace("#EXTRA#", extra + " " + crop) tCmd = tCmd.replace("#QUALITY#", qual) #Se sono su Linux non scrivo la prima passata: if os.name == "posix" and i == 0: tCmd = tCmd.replace("#OUTPUT#", "/dev/null") else: tCmd = tCmd.replace("#OUTPUT#", output + "." + outputExt) #Lancio il comando: log.write(tCmd + "\n") log.flush() if batch: #Aggiungo il -v 5 tCmd = tCmd.replace("-y", "-y -v 5") batchRet.append(tCmd) else: os.system(tCmd) #Creo lo screenshot: if encType in ["A", "M"]: tCmd = thmCmd tCmd = tCmd.replace("ffmpeg", "\"" + ffmpegCommand + "\"") tCmd = tCmd.replace("#INPUT#", output + "." + outputExt) tCmd = tCmd.replace("#OUTPUT#", output + ".THM") log.write(tCmd + "\n") log.flush() if batch: #Aggiungo il -v 5 tCmd = tCmd.replace("-y", "-y -v 5") batchRet.append(tCmd) else: os.system(tCmd) #Rimozione file temporanei: toDel = ["ffmpeg2pass-0.log", "x264_2pass.log", "pmptemp.mp3", "pmptemp.avi", output + "." + outputExt + ".log"] for f in toDel: try: os.remove(f) except: pass fine = localtime() if not batch: print "+" + "-" * 76 + "+" print "|" + "Codifica Terminata".center(76) + "|" print "+" + "-" * 76 + "+" print " Codifica iniziata : " + str(inizio[3]) + ":" + str(inizio[4]) + ":" + str(inizio[5]) print " terminata: " + str(fine[3]) + ":" + str(fine[4]) + ":" + str(fine[5]) print #Salvo l'ultimo numero usato: if not caricato: f = file("pyPSPenc.dat", "w") f.write(str(lastNumber) + "\n") f.close() #Salvo le impostazioni: risp = None risp = raw_input(" Nome file per salvare configurazione (INVIO per non salvare)? ") if len(risp) > 0: if risp[-3:] != ".py": risp += ".py" out = file(risp, "w") out.write("input=" + repr(input) + "\n") out.write("titolo=" + repr(titolo) + "\n") out.write("encType=" + repr(encType) + "\n") out.write("fps=" + repr(fps) + "\n") out.write("dim=" + repr(dim) + "\n") out.write("volume=" + repr(volume) + "\n") out.write("aRate=" + repr(aRate) + "\n") out.write("vBitrate=" + repr(vBitrate) + "\n") out.write("aBitrate=" + repr(aBitrate) + "\n") out.write("passate=" + repr(passate) + "\n") out.write("qual=" + repr(userQual) + "\n") out.write("extra=" + repr(extra) + "\n") out.write("output=" + repr(output) + "\n") out.write("outputExt=" + repr(outputExt) + "\n") out.close() else: print " Codifica annullata dall'utente!" log.close()
print
 
Data: 26/04/2024
Ora: 04:26
« Aprile 2024 »
Lu Ma Me Gi Ve Sa Do
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

 
Nome utente:

Password:



 

 
Persone on-line:
 0 admins
 0 utenti
 0 ospiti

 
Traduci il testo:
Dal/Al