Portál AbcLinuxu, 1. května 2025 07:39
file
a mencoder s podporou XviD. dá se zjistit mencoder -ovc help
Je-li tam xvid, bude to fungovat, není-li, nebude.
#!/usr/bin/env python import os,sys,re,popen2,string # Definice: # Do ktereho adresare vypoustet hotove soubory? outputdir='/mnt/hdb2/mda/video' ### obrazovka pristroje: fx=320 fy=240 ### Audio: # Kvalita algoritmu aq=2 # VBR kvalita vbr=9 ### Video: bitrate=180 # kolika pixely musi byt beze zbytku delitelna kazda strana pixel=4 # je video kreslene? 1=ano 0=ne cartoon=0 def makefloat(s): try: i=float(s) return i except: pass def retpix(a): while not int(a)%pixel==0: a=a-1 return int(a) if not len(sys.argv)==2: print 'Nespravne zadane argumenty k behu:',sys.argv sys.exit(2) source=sys.argv[1] if not os.path.exists(source): print 'Soubor neexistuje:',source sys.exit(2) finalname=os.path.join(outputdir,os.path.basename(source)) i=1 while os.path.exists(finalname): finalname=os.path.join(outputdir,os.path.splitext(os.path.basename(source))[0]+'.%s'+os.path.splitext(os.path.basename(source))[1])%i i=i+1 try: (sx,junk,sy)=map(makefloat,string.split(re.compile('\d+ x \d+').findall(popen2.popen3('file "%s"'%source)[0].read())[0])) except: print 'Nepodarilo se zjistit rozliseni' sys.exit(2) if sx/fx>=sy/fy:osa=sx/fx else: osa=sy/fy (tx,ty)=map(retpix,(sx/osa,sy/osa)) if cartoon: cartoonstring='cartoon:chroma_me' else: cartoonstring='' pass1='nice -n 19 mencoder "%s" -oac copy -ovc xvid -xvidencopts pass=1:me_quality=6:quant_type=h263:chroma_opt:hq_ac:vhq=4:%s -vf scale=%s:%s -o /dev/null'%(source,cartoonstring,tx,ty) retval=os.system(pass1) if not retval==0: print 'Neco se udelalo spatne..' print pass1 sys.exit(2) pass2='nice -n 19 mencoder "%s" -oac mp3lame -lameopts q=%s:aq=%s -ffourcc DX50 -ovc xvid -xvidencopts pass=2:bitrate=%s:me_quality=6:quant_type=h263:chroma_opt:hq_ac:vhq=4:%s -vf scale=%s:%s -o "%s"'%(source,vbr,aq,bitrate,cartoonstring,tx,ty,finalname) retval=os.system(pass2) if not retval==0: print 'Neco se udelalo spatne..' print pass2 sys.exit(2) print '\n\nVsechno OK.' sys.exit(0)
Tiskni
Sdílej:
mencoderem
je lepsi, aspon lip to vypada, je to min narocny (zvladne to i pomalejsi PDA jako je moje hp6340). S tim vzhledem to je mozna subjektivni pocit ale benchmark v TCPMP vykazal videa upravena pomoci meho scriptu jako min narocna.
Prikladam muj script, kterej neni zas tak user friendly :P
#!/bin/bash mkdir pda for soubor in *.avi; do mencoder "$soubor" -o pda/"${soubor%.*}.avi" -vf scale=320:-2 -zoom -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=200 -lameopts vbr=0:br=64:mode=0 -srate 22050 -ofps 15 doneJen si posledni dobou mi pride ze musim trosku upravit zvuk, protoze to dela celkem hnusnej zvuk, mozna zvednu vzorkovaci frekvenci. Uvidime, az se budu nudou kopat do zadku tak to zkusim este vylepsit :). Jo jinak skript prevede vsechny avicka ve slozce, ve ktere je ulozen do nove vytvorene slozky pda pod stejnym nazvem. Pokud bude uzivatel chtit zmenit vstupni podminky staci upravit radek
for soubor in *.avi; doA este prevod trva namisto cca 7min s tvym skriptem 1-2 s mym (1200 Duron). Jeste me zaujala tvoje uprava zda je video kresleny ci ne, na to se taky musim mrknout jak to funguje. Dik za info ;)
-sub titulky
.. Ještě bych chtěl upozornit na to, že -ofps 30 je zbytečný parametr, protože zdrojové video pravděpodobně nebude mít víc a je lepší tedy video ponechat se stenými FPS.
mencoder "$soubor" -o pda/"${soubor%.*}.avi" -vf scale=320:-2 -zoom -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=400 -lameopts vbr=0:br=64:mode=0 -srate 22050 -ofps 30 -sub /cesta/k/souboru
... ale asi bude treba procist manual mencoderu kvuli fontum, atd.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.