Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Filmy a seriály, streamovací služby
Televize  |  Projektory
Audio a domácí kina
Multimediální centra  |  Ostatní
Svět hardware  |  Digimanie
Svět mobilně

Kodeky-podpora dualcore

Lar (115)|18.5.2007 15:28
Nedávno jsem trochu upgradoval počítač-vyměnil jsem procík za dualcore (AMDX4600) a tak trochu naivně jsem předpokládal,že mi to mimo jiné urychlí zpracování videa. Bohuže to není tak úplně pravda-vyzkoušel jsem DivX 6.6.-vytížení procesoru max 80%,poslední verze XVID-tak 60-65%.Jediný co plně využije obě jádra je Nero recode-obě jádra na 100% a překomprimování videa na jednovrstvý DVD (LOTR) pak trvá 20 min.
U realtime nahrávání je to ještě horší-ikdyž kupodivu zrovna DV kodek od mainconceptu vytíží obě jádra rovnoměrně cca každý 20%. Ale zkoušel jsem nahrávat z tuneru Leadtek Expert do MPEG4 (FDDshow) a využití dualcore nic moc-co je platný že mám dvoujádro-když 1 běží na 80% a druhý na 20%-pokud zvýším kvalitu tak jak jedno jádro vyskočí ke 100% a začnou vypadávat snímky ...Nahrávka je na jeden průchod docela ve slušné kvalitě,ale chtělo by to ještě deinterlace a to se realtime nedá udělat.
Tak bych se chtěl zeptat, jaký kdo má zkušenosti s enkodováním videa na dualcore systému ?
Mike (617)|19.5.2007 11:56
Ono uz napsat neco pro vice jader je problem, takze bud rad aspon za to, druhe jadro ti umozni s pocitacem jeste neco delat, aniz bys tim rusil kodovani.

Vesmes to funguje tak, ze v jednom vlakne se dela treba hledani makrobloku a v druhem DCT, jedna operace bude vzdy rychlejsi, takze jedno jadro pojede treba na 100% a druhe na min. U editoru muze kompresor bezet na jednom jadru a treba efekty na jinem. Udelat to lip je v podstate nemozny. Druhe reseni je komprimovat po castech, ticm se to zvedne klidne na 2x100%, ale neni to prave vicevlaknove kodovani. Nedela to zrovna takhle to Nero?
Lar (115)|19.5.2007 22:15
No asi to tak bude,nakonec každý fps navrch je dobrý. Podobně jak Nero Recode se chová DVD shrink,ale mám takový tušení,že je to nakonec ten samý program.
Jinak mě napadlo rozdělit video na půlky a pustit VD 2x,akorát aby to trefilo stejný bitrate a šlo to pak spojit.Asi to otestuju a uvidí se ...
Lar (115)|20.5.2007 07:05
Tak jsem to vyzkoušel-rozdělil vstupní nahrávko na 2 kusy-každý kus nechal enkodovat ve VD-při prvním průchodu do šlo na 80%,při druhým průchodu už byl procesor vytížený na 100%.Potom jsem to normálně spojil dohromady. Ještě kdyby se na to dal udělat nějaký skript,aby to fungovalo automaticky.
Mike (617)|20.5.2007 12:23
Jen aby ti ty manualni operace netrvaly dyl, nez kdybys to delal najednou :)
Lar (115)|20.5.2007 17:03
Jo to už mě taky napadlo. Chtělo by to nějak zautomatizovat.
vlada (3470)|21.5.2007 19:46
U VD můžeš využít toho, že v jednom threadu jede vstup (AviSynth) a v druhém jede komprese. Podle testů je to při kompresi DVD do MPEG-4 efektivnější než použití kodeku s podporou více jader.
Lar (115)|22.5.2007 07:38
To zní zajímavě,a která verze VD podporuje chod ve více threadech?
A mohl by jsi to trochu více rozepsat,případně poradit jak to nastavit?
vlada (3470)|22.5.2007 17:22
Tak to Ti teď neřeknu, od jaké verze tohle VirtualDub umí, ale pokud si stáhneš nejnovější 1.7 (a možná i 1.6), tak tam ta funkce bude. Potom jde o to, aby se veškerá filtrace videa (dekomprese, resize atd.) prováděla přes AviSynth. Tím se rozdělí práce na AviSynth a kodek a většinou to vyjde tak akorát půl na půl.

Jak pracovat s AviSynthem najdeš třeba v mém návodu na ripování DVD. Další informace jsou na Doom9 - podívej se až dolů na tabulku srovnání rychlostí kodeků a příslušný komentář.
Lar (115)|22.5.2007 21:06
Díky ,začal jsem si trochu hrát se skripty v AviSynth.Dle tvěho návodu jsem si udělal zkušební skript:
LoadPlugin("c:\Program Files\Avisynth 2.5\plugins\VagueDenoiser.dll")
LoadPlugin("c:\Program Files\Avisynth 2.5\plugins\DGBob.dll")
LoadPlugin("c:\Program Files\Avisynth 2.5\plugins\warpsharp.dll")

DirectShowSource("test.avi")
Crop(0,6,0,0)
ConvertToYV12()
DGBob(order=0,mode=2,thresh=12)
VagueDenoiser(threshold=4,method=1,nsteps=6,interlaced=false)
WARPSHARP(DEPTH=65,THRESHOLD=40)
Doufám,že je to dobře-u toho vaguedenoiser filtru mi to vyhodilo chybu u prametru chroma, tak jsem ho vyhodil.
Akorát mě mrzí,že nejde použít smart deinterlace-existuje taky jako filtr pro AviSynth?
-akorát nevím jestli to běží fakt ve dvou threadech-ukazuje se mi pouze jeden proces-virtual dub ..
Lar (115)|22.5.2007 22:38
Takže jsem se dostal na nějakých 75% zatížení procesoru-cca 15FPS.Vypadá to ,že jeden z procesů bude asi pomalejší-typoval bych AVISynth,takže mě napadlo, co zkusit vyhodit nějakej filtr z Avisynth -třeba DGBob a místo toho dát ve VD smart deinterlace-stačilo by v druhým průchodu při komprimaci do Xvidu.
The_derava_bota (60)|22.5.2007 23:52
Vyhoď to všecko, čím víc to budeš "filtrovat" tak to bude horší.
Lar (115)|23.5.2007 08:56
Tak to bych neřekl,nějakou dobu s tím už hraju,tak vím,že když se použijou správný filtry,tak se dostanu výrazně lepší výsledek než originál.
To je jako u fotky z digitálu-bez doostření,srovnání barev atd. se je ta fotka nepoužitelná.
Jinak provedl jsem další modifikace-vyhodil jsem warpsharp a přidal jsem warpsharp při druhým průchodu do xvidu-
-1 průchod 75% zatížení procesoru,cca 22 fps)
-2 průchod téměř 100% zatížení procesoru,18 fps
-to už se mi docela líbí,akorát si s tím ještě trochu pohraju-potřeboval bych něco jiných než crop-potřebuju horních 6 pixelů překrýt černým pozadím
-ten DGBOB mi rozhodil zvuk-obraz je 2xdelší než zvuk,ale to bude asi tím že je potřeba nastavit 50 FPS?
The_derava_bota (60)|23.5.2007 09:08
Taky sem si s tím hrál dost dlouho, jdou do avisyntu i filtry z TMpegu i z VD, některé filtry jsou fakt super, první dojmy nádherný, ale krom filtrů na odstranění bar. skvrn (chnr) nebo přidání šumu, či rozmazání kostiček to nestojí prakticky za nic a

NAVÍC, přes avisynt můžeš přehrávat, takže si z PC tam nahážeš co chceš při přehrávání (co utáhne PC) a kdykoli to můžeš měnit ...

Převod na 50fps je fatální začátečnická chyba.
Lar (115)|23.5.2007 10:34
No já s tím DgBOB deinterlace nemám zatím zkušenosti,používal jsem smartdeinterlace,ale jestli se to pochopil tak zdvojuje počet snímků, tím došlo k tomu že mám dvakrát delší zvuk než obraz,tak jestli víš jak to sesynchronizovat bez toho aby se zdvojnásobila snímková frekvence?
-osobně se mi stejně tenhle deinterlace moc nelíbí,zkusím něco jinýho
-už jsem na to přišel,chce to nastavit jinak ten parametr mode ,nic už nebudu otravovat,zkusím si s tím vyhrát sám
The_derava_bota (60)|23.5.2007 11:05
Jestli to ukládáš tak deinterlaci nedělej žádnou, proč taky ???

Deinterlace se požívá až při přehrávání na PC !!!
Lar (115)|23.5.2007 11:36
No já to právě používám pro přehrávání v PC-bez interlace to hrozně cuká,ale objevil jsem nějakej filtr,kterej vypadá zajímavě (smoothdeinterlace) tak ho otestuju
-ještě nevím jestli je nutná ta konverze do YV12,tuner to nahrává do RGB
The_derava_bota (60)|23.5.2007 12:19
Už podle názvu je zjevné že jde o zmetek. Ten filtr a ostatní se tam dávají až když se přehrává, né když se to komprimuje.

Blbě sem to napsal, už sem to opravil.
Lar (115)|23.5.2007 13:33
No já jsem nekoukal jen na název,ale i na návod a nevypadalo špatně-detekuje to hrany,umí to rozlišit statický scény od dynamických a má to spoustu dalších parametrů pro nastavení-prostě do provádí nějaký inteligentnější deinterlace podle analýzy jednotlivých snímků,akorát bude dost pracný to správně nastavit-každopádně to otestuju, tím se nic nezkazí
The_derava_bota (60)|23.5.2007 13:47
A na co to je že to detekuje nějaký hrany ...., to může skládat básničky nebo sbírat známky ale ve skutečnosti to nemá použití.
jaromir9909 (269)|23.5.2007 16:31
No a ten smart deinterlace jsi nezkoušel?
Musíš video převést na RGB32 a použít LoadVirtualDubPlugin.
Ve VD si otevři video, nastav si Smart Deinterlace filtr a ulož Ctrl+S-Save processing settings. Otevři ten soubor.vcf a budeš tam mít nastavení:
VirtualDub.video.filters.Add("smart deinterlace (2.8 beta 1)");
VirtualDub.video.filters.instance[0].Config(0, 3, 15, 100, 0, 0, 0, 0, 1, 2, 0);
Tu závorku si jen zkopíruj do AVS scriptu.
Lar (115)|23.5.2007 18:42
Díky,už jsem to zkoušel,ale hází mi to nějakou chybu:(hned na prvním řádku -chybný argument funkce)
můj skript:
LoadVirtualDubPlugin("c:\Program Files\Avisynth 2.5\plugins\smart.vdf")
DirectShowSource("test1.avi")
ConvertToRGB32()
smart(0, 3, 20, 100, 0, 0, 0, 0, 1, 2, 1)
SS2CZ (874)|23.5.2007 18:56
[CODE]
MPEG2Source("C:\20070206_0957 OCKO-TV.d2v")
ConvertToRGB()
LoadVirtualdubPlugin("C:\Program Files\Virtualdubmod\plugins\smart.vdf", "_VD_smart",1)
_VD_smart(0, 3, 25, 100, 0, 0, 0, 0, 1, 2, 0)
ConvertToYV12()
[/CODE]
:-R :-!!! B-) :BB: :-E Už fungujou smajli a code:-E :-!!!
jaromir9909 (269)|23.5.2007 19:08
nebo:
LoadVirtualDubPlugin("c:\Program Files\Avisynth 2.5\plugins\smart.vdf", "smart")
DirectShowSource("test1.avi")
ConvertToRGB32()
smart(0, 3, 20, 100, 0, 0, 0, 0, 1, 2, 1)
jaromir9909 (269)|23.5.2007 19:12
Špatně jsem se díval, on to je skoro stejné.

SS2CZ
Nevíš, jaký význam je u toho preroll.
Lar (115)|23.5.2007 19:16
Díky, byl jsi moc rychlý, na konec jsem na to přišel sám,že tam musí být název pluginu který se pak volá
SS2CZ (874)|23.5.2007 19:18
Nerozumím.:-?
Lar (115)|23.5.2007 19:20
Co jsi myslel tím SS2CZ?
-aha omlouvám se to nebylo na mě, už jsem z toho zmatenej, já myslel že je to zase nějakej název skriptu
SS2CZ (874)|23.5.2007 19:23
:D :D :D
jaromir9909 (269)|23.5.2007 19:27
SS2CZ

LoadVirtualDubPlugin ("filename", "filtername", preroll)

[QUOTE]
Some filters output depends on previous frames; for those preroll should be set to at least the number of frames the filter needs to pre-process to fill its buffers and/or updates its internal variables. [/QUOTE]
SS2CZ (874)|23.5.2007 19:35
Jo to já nevím,někde jsem to takle viděl v návodu tak to tak používám,hlavně,že to funguje.
Takle si načteš jakýkoliv filtr z VD.
jaromir9909 (269)|23.5.2007 19:42
[quote=SS2CZ;142416]Jo to já nevím,někde jsem to takle viděl v návodu tak to tak používám,hlavně,že to funguje.
Takle si načteš jakýkoliv filtr z VD.[/quote]


Funguje to právě i bez posledního parmetru, tak jak jsem to napsal níže, ale jaká je výchozí hodnota nebo jaký má význam nevím.
SS2CZ (874)|23.5.2007 19:45
Hm,zajímavý,třeba nám to někdo vysvětlí.:) :BB:
Lar (115)|24.5.2007 11:57
Takže díky všem za rady,už to funguje tak jak jsem si to představoval-používám vyzkoušené filtry s VD -a pouštím to ve starém dobrém VirtualDubmodu.V prvním průchodu jsem na 80% vytížení-v druhým průchodu na 100% -FPS -v druhým průchodu mám ještě přidané filtry přímo ve VD (Warp Sharp) -průměrné FPS je okolo 20.
Ještě mám trochu zmatek v barevných formátech -kvůli filtrům do konvertuju do RGB 32, neměl bych to před komprimací do XVIDU překonvertovat do YUV12-někde jsem četl že je pak komprimace rychlejší?
a druhý dotaz, jak hodně jsou ztrátové tyhle převody mezi RGB a YUV?
vlada (3470)|24.5.2007 12:41
YV12 má čtvrtinový rozlišení barev oproti RG24 (RGB32 je nesmysl, tam máš i průhlednost a tu asi nepotřebuješ). Převody mezi RGB24 a YV12 jsou samozřejmě ztrátové, ale není to až taková tragedie.
Jinak XviD nepracuje s jinými barvami než YV12, pokud vím, takže ta konverze tam proběhne vždy.
The_derava_bota (60)|24.5.2007 12:47
100 x větší ztráta je samotnej Xvid :-E
Lar (115)|24.5.2007 13:04
Jasně,jaký je rozdíl mezi RGB32 a RGB24 vím,dal jsem to do AviSynth kvůli filtrům ....
-když to zkonvertuju přímo ve AviSynth do YUV12 tak bych mohl ulehčit práci XVIDU
vlada (3470)|24.5.2007 13:25
jaromir9909, SS2CZ
Pokud to z toho popisu dobře chápu, tak ta poslední hodnota určuje, kolik snímků dopředu a dozadu může filtr z VD vidět. Například u SmartDeinterlace se dá nastavit, aby hledal artefakty pouze uvnitř jednoho snímku a nebo aby prohledával i okolní snímky. Podle toho se potom odvíjí, kolik tam nastavit.
jaromir9909 (269)|24.5.2007 13:50
vlada

Dík.

Ohledně převodů barev. Je i ztrátové YV12-RGB24-YV12 a nebo co se dopočte, tak se ubere.
Osobně jsem se tomu raději vyhýbal, ale Lar má zdroj RGB24.
Lar (115)|24.5.2007 14:02
Jo zdroj je z TV-tuneru.
Teď mě ještě napadlo, jestli bych bych v AVisynth nemohl do jednoho skriptu nacpat i úpravu zvuku-tzn.deemux , uložit waw a zkomprimovat to Lame (lame.dll přece existuje) a znovu přidat zkopmrimovaný zvuk do avi.
-takhle v jednom kroku by to nemělo chybu
Lar (115)|24.5.2007 14:20
Vůbec nejlepší by bylo nějak to zautomatizovat ve VD-abych pustil skrit a provedlo se to celý komplet-ale ve VD snad jdou dělat skripty, budu to muset prozkoumat
jaromir9909 (269)|24.5.2007 14:54
Lar

Na tohle raději VBScript nebo BAT.
Lar (115)|24.5.2007 15:25
No tak to vypadá moc pěkně, to je asi přesně to co jsem myslel,ještě vědět jak nastavit jednotlivý parametry
jaromir9909 (269)|24.5.2007 16:23
[quote=Lar;142513]No tak to vypadá moc pěkně, to je asi přesně to co jsem myslel,ještě vědět jak nastavit jednotlivý parametry[/quote]

Nic nenastavuj, ale ulož si spracování videa CTRL+S a jen doplníš o :
VirtualDub.Open("G:\\capture\\cap.avs","",0);
a na konci
VirtualDub.audio.SaveWAV("G:\\capture\\audio.wav");
VirtualDub.Close();

nebo:
Ulož jako jobs a překopíruj do vcf souboru a doplň:
VirtualDub.audio.SaveWAV("G:\\capture\\audio.wav");

Takhle můžeš spustit i encodování, když si připravíš ty scripty, ale nevím, zda to není moc složité.
Samozřejmě můžeš i sestavit bat soubor a naplánovat spuštění na noc v plánovači úloh.

edit:

Došlo z mé strany k omylu a přiložil a citoval jsem chybný *.vcf soubor.
Správně je:
VirtualDub.SaveWav
Lar (115)|24.5.2007 20:18
Díky vyzkouším to, a uvidím.
quasi (157)|25.5.2007 18:06
[QUOTE=The_derava_bota;142336]Taky sem si s tím hrál dost dlouho, jdou do avisyntu i filtry z TMpegu i z VD, některé filtry jsou fakt super, první dojmy nádherný, ale krom filtrů na odstranění bar. skvrn (chnr) nebo přidání šumu, či rozmazání kostiček to nestojí prakticky za nic a

NAVÍC, přes avisynt můžeš přehrávat, takže si z PC tam nahážeš co chceš při přehrávání (co utáhne PC) a kdykoli to můžeš měnit ...

Převod na 50fps je fatální začátečnická chyba.[/QUOTE]

To by ma teda zaujimalo, preco je prevod na 50fpt fatalna chyba. Dost dlho som experimentoval s deinterlace a skusil som snad vsetky dostupne metody, ale uspokojivy vysledok mam len s 50fps dgbob. Bohuzial, dostupne filtre bud obraz prilis rozmazu, alebo je prilis trhany, ale ani jedno nevyzera dobre. Slusny vysledok pri 25fps je mozne dosiahnut snad len pouzitim studiovych nastrojov, ktore nie su bezne dostupne, ale s volnymi nastrojmi asi nie. Skusal som aj motion blur, ale tiez to nevyzeralo dobre. Kvalitne progresivne video som nasiel na nete pri 30fps, ale to bolo z progresivnej kamery, nie prekladenej s odstranenim.

Ak vies o postupe previest 50i na 25p tak, aby sa na to dalo pozerat, napis. Iste nie som jediny, kto sa rad nauci nieco nove.
quasi (157)|25.5.2007 18:12
[QUOTE=Lar;141942]Nedávno jsem trochu upgradoval počítač-vyměnil jsem procík za dualcore (AMDX4600) a tak trochu naivně jsem předpokládal,že mi to mimo jiné urychlí zpracování videa. Bohuže to není tak úplně pravda-vyzkoušel jsem DivX 6.6.-vytížení procesoru max 80%,poslední verze XVID-tak 60-65%.Jediný co plně využije obě jádra je Nero recode-obě jádra na 100% a překomprimování videa na jednovrstvý DVD (LOTR) pak trvá 20 min.
U realtime nahrávání je to ještě horší-ikdyž kupodivu zrovna DV kodek od mainconceptu vytíží obě jádra rovnoměrně cca každý 20%. Ale zkoušel jsem nahrávat z tuneru Leadtek Expert do MPEG4 (FDDshow) a využití dualcore nic moc-co je platný že mám dvoujádro-když 1 běží na 80% a druhý na 20%-pokud zvýším kvalitu tak jak jedno jádro vyskočí ke 100% a začnou vypadávat snímky ...Nahrávka je na jeden průchod docela ve slušné kvalitě,ale chtělo by to ještě deinterlace a to se realtime nedá udělat.
Tak bych se chtěl zeptat, jaký kdo má zkušenosti s enkodováním videa na dualcore systému ?[/QUOTE]

Myslis, ze ma zmysel menit A3200 za DC A4200? Vykonu totiz nikdy nie je dost pri spracovani videa, ale ak je vykon u 2jadrovych cpu pocitany ako sucet oboch jadier, a vacsinou bude vytazene len jedno, tak to asi nie je bohvieco. No neviem...
vlada (3470)|25.5.2007 18:58
Tohle je zajímavý projekt: http://forum.doom9.org/showthread.php?t=120025

Jinak si myslím, že konverze YV12->RGB24->YV12 by měla být bezztrátová.
The_derava_bota (60)|25.5.2007 20:41
[QUOTE=quasi;142586]To by ma teda zaujimalo, preco je prevod na 50fpt fatalna chyba.
~
Ak vies o postupe previest 50i na 25p tak, aby sa na to dalo pozerat, napis. Iste nie som jediny, kto sa rad nauci nieco nove.[/QUOTE]

Ale ano, převod do souboru před komprimací do 50fps ....

Při přehrávání na PC z prokládaného videa jedině BOB (v avisytu), tento filtr zvětší půlsnímky na celé rozlišení a přehrává je jeden podruhým nikoli dva v jednom s časovým posunem. Tady je jasné že takto uměle zvětšený tok dat zabere o něco méně než je dvojnásobek zdroje, a to je při kompresi do souboru nesmysl, ikdyž místa je dost ..., ale proč zcela zbytečně plýtvat, že ???

Postup z 50 půlsnímků do 25 celých samozřejmě nejde bez újmy, existuje řada desítek "deinterlací" ale stojí vždy za kulový ....

Při takových mašinách jako jsou dnes nemá smysl používat filtry do komprese, jdeli o přehrávání z PC ale až při tom přehrávání je tam vrazit.
jaromir9909 (269)|27.5.2007 16:27
vlada
Ještě jednou dík.

Zajímavý projekt. Podívám se na něj.