Portál AbcLinuxu, 7. prosince 2025 17:46
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
done
Jen 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.