Portál AbcLinuxu, 24. dubna 2024 22:43

Skript pro převod videa na obrazovku PDA

23.7.2006 16:13 | Přečteno: 1676×

Zdravím,
dávám do pléna skript, který jsem si napsal pro převod videa pro obrazovku mého zařízení. Je třeba definovat rozměry obrazovky cílového PDA, skript poté zjistí velikost výchozího videa a video podle toho zmenší. Přepokladem je to, že video chcete mít ve velikosti co nejvíce podobné velikosti obrazovky. Je psaný mně na míru, takže ukládá do XviD a používá pouze VBR MP3. Snad se někomu bude hodit.

Použití je vyloženě user-friendly :-)
#!/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)
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

benyy avatar 23.7.2006 18:21 benyy | skóre: 14
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak sem to zkousel, a zda se mi ze muj prevod 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; do
A 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 ;)
23.7.2006 19:12 misterlister | skóre: 12 | blog: aiyyo
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Ad náročnost a kvalita videa - za to může -ofps 15, mně osobně 15 snímků za sekundu nevyhovuje, video je trhané, pro porovnání kvality by musela mít obě videa 15 FPS.
Co se délky kódování týče - lavc je rozhodně rychlejší než XviD a ke všemu v tom mém skriptu běží XviD s výpočetně nejnáročnějšími možnostmi. A kromě toho je taky rozdíl v počtu průchodů :-)
Kreslený/nekreslený mám pocit rozlišuje jenom XviD, v manuálu volba cartoon.
24.7.2006 19:54 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
no supr, trochu jsem si ten script upravil pro svuj acer n311, dííííííky
hmm
Chloop avatar 24.7.2006 11:23 Chloop | skóre: 14 | blog: Chlupi_blog
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Odpovědět | Sbalit | Link | Blokovat | Admin
Úžasné! Kdeže mám to DVD s Červeným Trpaslíkem a tu Futuramu ? ;)
All we need: "Peace, Love & Linux"
24.7.2006 21:34 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Odpovědět | Sbalit | Link | Blokovat | Admin
Mám takovej menší dotaz, co mam dopsat do tohoto scriptu

#!/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=400 -lameopts vbr=0:br=64:mode=0 -srate 22050 -ofps 30 done

aby se mi vložily titulky do filmu?

Děkuji
hmm
24.7.2006 22:11 misterlister | skóre: 12 | blog: aiyyo
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Jako kdyby bylo cílem video přehrát: -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.
24.7.2006 22:34 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Prosím o úplný kopanec s řádkou si nerozumím...:( hod mi to do toho scriptu díky
hmm
24.7.2006 22:41 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
už to mam, na konec prece
hmm
24.7.2006 22:43 misterlister | skóre: 12 | blog: aiyyo
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
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.
24.7.2006 22:48 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
ano české znaky se nezobtazují... nestačilo by tam zadat něco jako cp1250?
hmm
24.7.2006 23:23 misterlister | skóre: 12 | blog: aiyyo
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
-subcp cp1250 .. ale mně to nefunguje :o( úplně to ignoruje parametr -font .. jestli to taky nebude fungovat, je tu ještě avidemux.
benyy avatar 25.7.2006 10:41 benyy | skóre: 14
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Me to fonty taky nejak ignoruje, kazdopadne to -subcp cp1250 mi funguje v poradku. Pro zobrazeni cestiny sou nutne ceske locales
25.7.2006 21:39 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
mplayer mi titulky přehraje korektně u filmů, ale mencoder je prostě nedokáže korektně vložit do toho filmu, neumí ěšřčž
hmm
24.7.2006 23:23 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
at přidam -subcp enca:cs:latin2 nebo -subcp cp1250 tak mi prostě ščě nepřevede:(
hmm
24.7.2006 23:31 sssssssss | skóre: 15 | blog: cotoje
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
v avidemuxu vůbec nevim jak...
hmm
25.7.2006 09:20 misterlister | skóre: 12 | blog: aiyyo
Rozbalit Rozbalit vše Re: Skript pro převod videa na obrazovku PDA
Video filter => Add => Subtitler. Alespoň já ho tam mám.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.