Vlákno názorů k článku MPlayer a MEncoder: enkódujeme od Jakub - Ještě bych se chtěl vyjádřit k odstavci o...

  • Článek je starý, nové názory již nelze přidávat.
  • 29. 12. 2005 8:43

    Jakub (neregistrovaný)
    Ještě bych se chtěl vyjádřit k odstavci o přidání filtrů - napsat jenom, že to je volitelná věc, kterou necháme na čtenářích, je neštastné. Pro dobrou výslednou kvalitu je prakticky vždy nutné přidat aspoň filtr ořezu - i když video není širokoúhlé (s černými pruhy nahoře a dole), je to skoro vždycky potřeba. Každou černou nebo třeba i ne úplně stoprocentně čistou čáru na jakémkoli ze všech čtyřech okrajů TV nahrávky je zcela nezbytné oříznout (používat jen sudá čísla) a nechat jen 100% čistý obraz, protože tyto okraje kodekům dělají při kódování potíže a výsledná kvalita (zejména v přilehlých místech) se hodně sníží. To ale znamená, že je pak skoro vždy nutné použít i zmenšení velikosti, abychom byli na optimálních násobcích 16 pro výšku i šířku. A samozřejmě zmenšením obrazu se může i značně zlepšit celková kvalita - při velmi nízkém datovém toku, typickém pro MPEG-4, není možné používat plné PAL rozlišení. Pochopitelně musíme dbát i na správný poměr stran.

    Takže to rozhodně být zmíněno mělo, je to dost zásadní věc.
  • 29. 12. 2005 8:49

    Jakub (neregistrovaný)
    A samozřejmě když se zde píše o nahrávkách z analogové TV karty (ale nejen těch), filtr na potlačení šumu - nejlépe hqdn3d - taky ve výsledku dost pomůže, zejména právě při finálním kódování s nižším datovým tokem.
  • 29. 12. 2005 10:39

    CIJOML
    Jakube nechces uvest nekolik prikladu jak encodujes ty i s popisem parametru? Zajima me hlavne DVD a DVB-T. Diky
  • 29. 12. 2005 22:05

    Jakub (neregistrovaný)
    Já mám bohužel analogovou TV kartu a kóduju všechno do AVI/MPEG-4, takže ty příklady by ti asi moc nepomohly. :-)
  • 30. 12. 2005 11:20

    anonymní
    Ja resim jak nachytany MPEG2 stream z DVB-T prevest do XviD MPEG-4. Na to by mi mozna pomohl i ten priklad na klasickou telku...
  • 30. 12. 2005 13:32

    Jakub (neregistrovaný)

    Já na kódování, stříhání atd. používám převážně Avidemux, ale ono ani tak nejde o ten konkrétní program a nicneříkající výpis konkrétních voleb (protože ty se liší podle konkrétního případu), důležitý je princip. Nevím, jestli stojí za to tady vypisovat věci, co jsou i v dokumentaci, ale budiž:

    1. Vystřižení reklam, začátků, konců...

    2. Nastavení filtrů:

    a) Tady je potřeba si projít celou nahrávku a pokud jsou tam černé nebo nečisté okraje, oříznout (prohlížet ve velikosti 1:1 v okně, stačí i jednopixelová čára na okraji obrazu - ovšem používat jen sudá čísla pro ořez):

    -vf crop=764:570:2:2

    (to je jen příklad, záleží na konkrétním videu)

    Samozřejmě u širokoúhlých filmů je to jasné - oříznout komplet černé pruhy. K tomu lze použít automatiku:

    -vf cropdetect
    která vypíše doporučené hodnoty na výstup.

    b) Změna velikosti - snížení rozlišení. Tady už je dobré si spočítat bitrate, respektive poměr bitů na pixely, abychom měli představu o kvalitě v daném rozlišení při očekávané velikosti souboru a podle toho zvolili finální rozlišení:

    bpp=(video_bitrate*1000)/fps/(sirka*vyska)

    kde video_bitrate je datový tok videa v kilobitech za sekundu, fps je snímková frekvence (25 u normy PAL) a sirka*vyska je finální rozlišení, které zkoušíme.

    Bitrate získáme tak, že spočítáme velikost videa:

    video_bitrate=velikost_videa/cas/1000

    kde velikost_videa je cílová velikost souboru (např. 700 MB pro 1 CD) mínus velikost audio stopy (ta se u CBR MP3 audia spočítá snadno - kilobity za sekundu, ABR je podobný případ a VBR audio musíme nejdřív zakódovat a pak se uvidí jak je audio stopa veliká) a cas je čas v sekundách. Taky se musí něco odečíst pro režii AVI souboru.

    Při postupu uvedeném v článku (tříprůchodové kódování) by měl MEncoder sám zobrazit bitrate.

    Hodnota bpp může zhruba indikovat kvalitu, kolem 0.2 je to tak akorát - ale každé video je jinak komprimovatelné, u některých stačí k slušné kvalitě třeba 0.15, jindy ani 0.23 nemusí být dost. Hodně akční nebo zašuměné video se komprimuje hůř (a potřebuje větší hodnotu bpp) než čistý jednoduchý obraz, kde se nic moc nehýbe a nebliká.

    Obecně pro 1 CD a délky mezi 80-120 minutami je při poměru stran 4:3 ideální rozlišení 512x384, u kratších se dá použít třeba 576x432, u delších 448x336 atd. U širokoúhlého videa to je samozřejmě jiné (u něj pozor na správný poměr stran - v AVI budou na rozdíl od MPEG-2 videa čtvercové pixely, 1:1, takže ten rozdíl je třeba při změně velikosti vykompenzovat, aby obraz nebyl zdeformovaný).

    Takže přidat filtr pro změnu velikosti:

    -vf crop=764:570:2:2,scale=512:384

    Případně přidat parametr -sws 9 pro ostřejší filtr na zmenšení (lanczos).

    c) U digitální nahrávky by měl být obraz čistý, ale i tam se, např. u filmů, může hodit filtr hqdn3d pro redukci šumu:

    -vf hqdn3d,crop=764:570:2:2,scale=512:384
    jehož výchozí parametry se můžou u víc zašuměných (samozřejmě hlavně analogových) nahrávek zesílit:
    -vf hqdn3d=4:5:10,crop=764:570:2:2,scale=512:384
    (Je lepší jej aplikovat před zmenšením.)

    Takže závěrečný kompletní příklad: mám video o délce 90 minut, chci jej vypálit na 1 CD. Audio bude CBR MP3 128 kb/s.

    Velikost audio stopy: 128000/8*5400/1024 = 82,4 MB.

    Bitrate videa: (700-82,4)*8*1024*1024/5400/1000 = 959,4 kb/s

    Od tohoto bitrate něco odečteme pro režii AVI kontejneru (udává se 24 bytů na frame - všechny, audio i video). Kodek XviD by už ale s ním měl automaticky počítat.

    Kompletní příkaz pro dvojprůchodové kódování:

    mencoder -vf hqdn3d,crop=764:570:2:2,scale=512:384\ 
    -oac mp3lame -lameopts cbr:br=128\ 
    -ovc xvid -xvidencopts pass=1:bitrate=959\
    :me_quality=6:vhq=4:max_bframes=1:trellis\
    :chroma_me:chroma_opt:hq_ac vstup.mpeg\ 
    -o vystup.avi
    (první průchod)
    mencoder -vf hqdn3d,crop=764:570:2:2,scale=512:384\ 
    -oac mp3lame -lameopts cbr:br=128\ 
    -ovc xvid -xvidencopts pass=1:bitrate=959\
    :me_quality=6:vhq=4:max_bframes=1:trellis\
    :chroma_me:chroma_opt:hq_ac vstup.mpeg\ 
    -o vystup.avi
    (druhý průchod)

    Volby jako VHQ, trellis a používání B-frames zlepšují poměr kvalita/velikost. Případně se při dostatečné komprimovatelnosti či vyšším bitrate, nedostatečné ostrosti atd. dá přidat quant_type=mpeg pro používání ostřejších MPEG kvantizérů místo H.263.

    Ty příkazy jsem psal naslepo, aniž bych je testoval, tak se omlouvám za případné chyby v nich.

  • 30. 12. 2005 13:52

    Jakub (neregistrovaný)
    Jinak co se týče kodeku XviD a bitrate - v různých programech lze místo bitrate zadat velikost obrazu - i v MEncoderu lze prý zadat velikost obrazu (bez zvuku) v kilobytech, která se zadává jako záporné číslo místo bitrate. Ale v MEncoderu jsem to nezkoušel.
  • 31. 12. 2005 2:09

    ivan (neregistrovaný)
    ok uz opravene