Portál AbcLinuxu, 2. května 2025 06:11
Ukládání nahrávky do obrázků pomocí mplayeru zajistí např. volba -vo png, takže když chceme sejmout kousek nahrávky uložené ve formátu MPEG-2 po deseti minutách od začátku, zadáme příkaz
mplayer -ss 600 -vo png Nahravka.mpegTím se začnou vytvářet soubory 00000001.png, 00000002.png atd., dokud mplayer nestopnem sitiskem 'q'. Uložené obrázky můžeme prohlížet třeba kolourpaintem, kde lze obrázky jednoduše zvětšit o odečíst rozměry oblasti pro ořez. Při zpracovnání mencoderem se zadává oblast pro ořez parametrem pro filtrování videa
-vf crop=šířka:výška:levýokraj:horníokrajZadáváme v pixelech šířku, výšku a hranice oblasti, která zůstane zachována po ořezu, přičemž hranice se počítají od nuly, takže souřadnice začátku této oblasti se rovnají šířce resp. výšce levé či horní odřazané oblasti. Tedy jestliže chceme odříznout 8 bodů zleva a 6 zprava a po čtyřech bodech nahoře i dole (zůstává oblast 706x568), má parametr pro ořez tvar
-vf crop=706:568:8:4
Z důvodů, které jsou přesně objasněny v citovaném návodu, je vhodné, aby odřezané okraje i zbylá oblast měly sudé rozměry, a pokud budeme odstraňovat proklad, musí být výška horního a dolního okraje, a tedy i výška zbylé oblasti, dělitelná čtyřmi.
Proklad nemusíme odstraňovat, pokud nahrávku chceme uložit tak, jak je, pouze sestříhanou. V takovém případě stačí odstranit proklad až při samotném přehrávání. Pro převod do MPEG-4 je ovšem odstranění prokladu nezbytné.
Na odstranění prokladu je možné použít více metod. Jejich seznam při použití mplayeru zjistíme např. příkazem mplayer -vf help |grep deint, dál nám napoví man mplayer. Zajímavé srovnání jednotlivých metod najdeme na těchto stránkách. Já na základě rady v jedné diskusi používám jádrový odstraňovač prokladu kerndeint=14:0:0:1:1.
O něco složitější je výpočet poměru, když odřezáváme větší okraje. Nejlépe si to ukážeme na příkladu. Mějme širokoúhlý film, který je ale vysílaný v poměru 4:3 s černými okraji nahoře a dole. Tyto okraje mají výšku 72 bodů, samotný film má tedy 432 bodů. Kromě toho je vlevo okraj 2 body a vpravo 4 body, zůstává tedy šířka 714 bodů. Tento rozměr musíme přenásobit koeficientem 16/15, kterým se násobí šířka vysílaná (720 bodů) na šířku zobrazovanou (768 bodů): 714x16/15=761,6. Poměr filmu je tedy 761,6:432=1.763. Takže můžeme bez obav použít klasický širokoúhlý formát 16:9=1.778.
Americké filmy, ale nejen ty, bývají někdy v poměru 2,35:1, v tom případě se bez černých okrajů ve vysílání nelze obejít. Tento poměr bychom dostali v předchozím příkladu, pokud by zobrazovaná šířka byla 1024 bodů. Pak je násobící koeficient 64/45 a podobným výpočtem by nám vyšel poměr 1015.467:432=2.351. Pro ukládání takových filmů je lepší použít poměr 7:3=2,333, který nabízí víc možností rozměrů, ale původní poměr se dá samozřejmě použít taky. V případě, že je film natočený původně v tomto poměru, nebo případně i klasický širokoúhlý film, částečně ořezán ze stran, narazíme na nestandardní poměry. Pak buď musíme nahrávku ořezat ještě více, nebo použít nejbližší poměr při zachování dělitelnosti rozměrů 16. Některé z nich uvádí i s doporučenými rozměry tabulka uvedená níže.
Vlastní parametr pro škálování je
-vf scale=šířka:výškaJednotlivé video filtry se oddělují čárkou. Celkem tedy může sekvence video filtrů při zpracování vypadat takto:
-vf crop=706:568:8:4,kerndeint=14:0:0:1:1,scale=512:384
Nejdůležitějším parametrem je video bitrate, který nejvíc ovlivňuje kvalitu zpracované nahrávky. Vetšinou je udáván v kilobitech za sekundu (kilobit je 1 000 bitů, nikoliv 1 024) a ovlivňuje faktor kvality komprese označovaný jako CQ. Hodnota CQ odpovídá počtu bitů na jeden pixel a pro MPEG-4 se doporučuje, aby byl mezi 0,2 a 0,3, ale při větších výsledných rozměrech můžeme CQ volit i menší až zhruba k 0,15. Je jasné, že čím větší hodnota CQ, tím kvalitnější je zpracovaná nahrávka, ovšem na úkor větší velikosti. Taky záleží na tom, o jaký typ filmu se jedná, jestli je děj poklidný nebo plný rychlých akčních scén. Nejhůř dopadají při zpracování scény v šeru, v mlze nebo pod vodou. U filmů, kde je podobných scén hodně, je lepší nastavit video bitrate spíš větší.
Označíme-li VBR video bitrate, Š a V šířku a výšku výsledné nahrávky a počítáme-li se standardními 25 snímky za sekundu, dostáváme pro CQ vztah CQ=(VBR*1000/25)/(Š*V) (první závorka dává počet bitů na jeden snímek, druhá počet pixelů v jednom snímku). Pro průměrnou doporučenou hodnotu CQ=0,25 odtud dostáváme jednoduchý vztah pro přibližný video bitrate VBR=Š*V/160.
Následující tabulka ukazuje některé možné použité rozměry zpracované nahrávky při daných poměrech stran spolu s hodnotou VBR podle uvedeného vzorečku (zaokrouhleno dolů).
poměr |
rozměry |
VBR |
rozměry |
VBR |
rozměry |
VBR |
4:3=1,333 |
640x480 |
1900 |
512x384 |
1200 |
384x288 |
650 |
16:9=1,778 |
1024x576 |
3650 |
768x432 |
2050 |
512x288 |
900 |
7:3=2,333 |
896x384 |
2150 |
672x288 |
1200 |
560x240 |
800 |
19:8=2,375 |
912x384 |
2150 |
608x256 |
950 |
|
|
47:20=2,35 |
752x320 |
1500 |
|
|
|
|
2:1=2 |
1024x512 |
3250 |
768x384 |
1800 |
512x256 |
800 |
5:3=1,667 |
720x432 |
1900 |
640x384 |
1500 |
480x288 |
850 |
3:2=1,5 |
720x480 |
2150 |
576x384 |
1350 |
432x288 |
750 |
15:8=1,875 |
960x512 |
3050 |
720x384 |
1700 |
480x256 |
750 |
Pokud máte na převod dost času, je doporučeno provádět zpracování dvěma průchody, kdy při prvním průchodu se ukládají informace o nahrávce do pomocného souboru divx2pass.log a při druhém průchodu se podle uložených údajů optimalizuje komprese videa, aby bylo dosaženo požadovaného bitrate. Jednoduchá dávka pro převod nahrávky pak může vypadat třeba takto:
#!/bin/bash # dvouprůchodové kódování TV nahrávky (MPEG-2) v poměru 4:3 fname=$1 videobr=700 mencoder \ -oac copy \ -ovc xvid -xvidencopts bitrate=$videobr:pass=1 \ -vf crop=700:568:8:4,kerndeint=14:0:0:1:1,scale=384:288 \ -o /dev/null $fname.mpeg mencoder \ -oac copy \ -ovc xvid -xvidencopts bitrate=$videobr:pass=2 \ -vf crop=700:568:8:4,kerndeint=14:0:0:1:1,scale=384:288 \ -force-avi-aspect 4/3 -o $fname.avi $fname.mpeg rm divx2pass.logU kodeku lavc je parametr označující průchod nazván vpass a parametr pro video bitrate vbitrate. Příklady nastavení parametrů pro různou výslednou kvalitu pro oba kodeky najdeme tady a tady. Při kódování je možné i odstranit proklad, ale v návodu i v manuálových stránkách (hledejte parametr interlacing pro kodek xvid) jsou informace o tom poměrně stručné, proto jsem to ani nezkoušel.
Při prvním průchodu vlastní zpracovanou nahrávku k ničemu nepotřebujeme, takže ji můžeme zahazovat. Při druhém průchodu je dobré uložit do výsledného souboru poměr stran (parametr -force-avi-aspect), protože jsem se několikrát setkal s tím, že se uložil poměr nesprávný, patrně z části před vlastní nahrávkou z reklam nebo upoutávek. Audio je ve formátu MP3, takže většinou stačí ho jen překopírovat. Podrobněji bych se chtěl o audiu zmínit v dalším díle.
Ke stříhání používám avidemux. Jeho ovládání je velmi jednoduché a intuitivní a dá se dobře ovládat jen z klávesnice bez myši. Jediný problém, který jsem musel řešit, byl nefunkční zvuk při spuštění. Je potřeba otevřít "Předvolby" v menu "Upravit" a nastavit "AudioDevice" na kartě "Audio". Zkuste vybrat z nabídky a otestovat. U starší verze bylo potřeba napsat "default" v položce "Alsa zařízení".
Při otevření video souboru nám nabídne možnost jeho přeindexování, tu odsouhlaste, zabere to jen pár vteřin. Nastavení formátu pro video i audio nechte implicitní "Kopie". Pro nahrávku bez reklam uvnitř stačí označit začátek a konec a pak uložit. Pokud jsou reklamy během nahrávky, označte začátek a konec reklamního bloku a ten vymažte. Někdy je to trochu piplačka, když chcete, aby záběry před reklamou a po reklamě na sebe plynule navazovaly. Při tom se často stane, že odstraníte klíčový snímek, od něhož se vždycky odvíjí kousek nahrávky. V takovém případě budete při ukládání dotázáni, jestli chcete použít tzv. "Smart copy". Odsohlaste a nechte defaultní parametr.
Namísto vystřihávání reklam můžete taky postupovat tak, že si uložíte jednotlivé části bez reklam, což se dá většinou udělat tak, aby začínaly klíčovým snímkem. Pro spojení jednotlivých částí pak lze použít mencoder:
mencoder -oac copy -ovc copy -o Film.avi F1.avi F2.avi F3.avi
To by mohlo být k videu zruba všechno, příště napíšu něco o zpracování audia.
Tiskni
Sdílej:
Ještě jsem neviděl nahrávku, kde by nebyl alespoň minimální černý nebo rozmazaný okraj,Zvlastne, ze je to bezne aj pri DVD. Na druhej strane pri vysielani rakuskeho ORF1 (aj ked som uz davno nepozeral), to byvalo cast bez ciernych pruhov.
Zdá se, že by správné bylo nejdříve nahrávku setříhat a pak až ji enkódovat, abychom nemuseli zbytečně zpracovávat nepotřebné části. Při tomto postupu jsem se ale poměrně často setkal s rozhozením synchronizace audia a videa.Na toto pouzivam stale dvbcut. Funguje super ak je zdroj mpeg2. Este som nezazil rozhodenie zvuku a obrazu. Aj ked momentalne hladam nahradu, pretoze ho vyrazili z portage a netusim ako dlho mi bude fungovat stary ebuild, pripadne kedy sa vrati.
change_rectangle
a koukat se na výsledek rovnou v reálném čase, více viz můj příspěvek do diskuze o digitalizaci VHS.
Děkuju za blog a inspiraci.
Poměr 5:4 je poměr rozměrů PAL (720x576) bez přenásobení šířky. Nudle 7xx na 3xx vypadá na americký formát 2,35:1. Na 576 řádků při poměru 16:9 připadá 1024 sloupců. Nešlo by uvést přesná čísla?Šlo, ale pro dotaz jsou nepodstatná a neměl jsem je po ruce. Kdyžtak viz parametr "quality" a celý skript tady.
Jestli máte jistotu, že to přehrávač správně roztáhne, tak by se nemuselo škálovat a stačilo by vnutit do nahrávky správný poměr, do avi souboru se to dá udělat pomocí -force-avi-aspect 16/9. Kodek lavc má zase parametr aspect. Tak můžete zkusit parametr -aspect při přehrávání mplayerem.O to se právě přesně snažím. Přepočítávání jsem z toho vyhodil úplně, ale ten poměr se tam korektně nezapisuje. Zatím jsem to nijak do hloubky nestudoval, ptal jsem se hlavně proto, jestli to už někdo nevyřešil, abych nevymýšlel kolo.
MP4Box -add soubor.mp4#video -add soubor.mp3#audio -PAR 1=16:9 vystup.mp4
(Opět poměr stran pixelu, ne obrazu.)
mkvmerge --aspect-ratio 0:16/9 -o vystup.mkv vstup.mp4
(Tady je to poměr stran obrazu, ne pixelu.)
Návod k MPlayeru překládal člověk, který neumí česky, bohužel tím zblbl hodně lidí, kteří to po něm čtou. Je to klasicky amatérské bezhlavé doslovné přepisování anglického výrazu do češtiny. Slovo enkódovat v češtině neexistuje (v žádném slovníku ÚJČ, ani v pravidlech českého pravopisu, ani v slovníku cizích slov). Předpona „en“ v anglických slovech odpovídá zhruba našemu „za“ nebo „vy“, tedy něco nějak učinit. Např. encapsulate je zapouzdřit (ne enpouzdřit), encipher je zašifrovat (ne enšifrovat), encamp je utábořit (ne entábořit), enrage je rozzlobit (ne enzlobit), no a encode je zakódovat, ne enkódovat.Tak jsem to opravil, díky za upozornění.
H.264 je běžný standard už dávno. Prakticky každý moderní stolní přehrávač videa už jej dnes podporuje (nejen proto, že je to standard Blu-ray), jeho podpora je nativně ve Windows 7 i Mac OS X, herních konzolích, video kamerách atd. Vysílá v něm i YouTube, které v H.264 nevysílá jenom pro počítače, ale i televize a mobilní zařízení. Dnes už je prostě H.264 rozšířenější a mainstreamovější než MPEG-4 Part 2, a ten rozdíl bude s každým rokem jenom narůstat.Vyjádřil jsem se trochu nepřesně. Standard to samozřejmě je, ale myslím, že ještě není moc rozšířený, zejména co se týče stolních přehrávačů. Třeba z mých známých nemá Blue-ray přehrávač nikdo. S tím, že se tento formát bude čím dál víc šířit, naprosto souhlasím. Nicméně, před časem jsem čekal, že klasická DVD nahradí nosiče s formátem MPEG-4, a zatím se tak neděje.
-vo pngTož to nevím. Ono to generuje docela rychle ty jednotlivé framy, dost zabírají a pak je ještě mazat? Když už nic, tak doporučuju aspoň -vf screenshot a klávesu S.
nejčastěji tak jsou vysílány přímé přenosy, zprávy a podobněJá měl za to, že prokládání už je součástí standardu (proto MPEG-2 a ne MPEG-1) DVB-T (a nebo aspoň u nás) a téměř každá televize už jen provádí deinterlacing.
Posledním nutným filtrem je přeškálování. Jak jsem uvedl v předchozí části, jestli chceme mít co nejvíc přenositelnou nahrávku ve formátu MPEG-4, je potřeba alespoň přenásobit šířku nahrávkyTo jsem nepochytal. Co je na 720x576 špatného?
Pro průměrnou doporučenou hodnotu CQ=0,25No, nevím. Přijde mi to zbytečně moc. Nedávno jsem se rýpal kolik by tak mohlo být sledovatelné minimum pro HD (1920x800) s MPEG-1 videem (kodek lavc) a skončil jsem na nějakých 3.5Mbps. A to šlo o trailer, takže spousta akčních scén v krátkém čase. V případě AVC (a to jsem x264 ani nijak zvlášť moc netunil – v podstatě defaultní parametry) mi nějakých 2.5Mbps přišlo pomalu jako plně transparentní. Určitě je vhodné si svoji hodnotu nějak empiricky najít a nespoléhat na předem rozhodnutá čísla. Úplně nejlepší by bylo samozřejmě nepřekódovávat to a nechat to tak jak to z karty leze.
Při druhém průchodu je dobré uložit do výsledného souboru poměr stran (parametr -force-avi-aspect)No a úplně nejlepší je nehackovat takový starý krám jako je AVI a ukládat to do něčeho normálního.
Audio je ve formátu MP3, takže většinou stačí ho jen překopírovat.
Audio je ve formátu MP2 (MPEG-1, Layer II přesněji) o 192kbps. Mám pocit, že to dokonce diktuje standard. Ale jinak souhlas. Nejlépe zkopírovat a neprznit ho chudáka ještě víc.
Nicméně až na pár vyjmenovaných maličkostí musím pochválit. Dokonce jsem se dozvěděl pár drobností, které jsem nevěděl.
Souhlasím. Jen bych doplnil, že občas v televizi běží věci, kde deinterlace není potřeba - obvykle filmy nasnímané na filmový pás, který je z principu bez řádkování a 24 fps se na 50 převede zdvojením framů a lehkým zrychlením.nejčastěji tak jsou vysílány přímé přenosy, zprávy a podobněJá měl za to, že prokládání už je součástí standardu (proto MPEG-2 a ne MPEG-1) DVB-T (a nebo aspoň u nás) a téměř každá televize už jen provádí deinterlacing.
Nejspíš to, že 720/576=1.25 a 4/3=1.33. Samozřejmě můžeme mít nečtvercové pixely (pixel aspect ratio <> 1:1). Mám ale zkušenost, že přehrávače to podporují jen u MPEG kontejneru. U oblíbeného avi (pro většinu lidí navíc avi implikuje obsah v DivX/MPEG4-ASP) to skoro žádný přehrávač nepodporuje (i když kontejner snad ano) - obraz je deformovaný na aspect ratio 1:1.25. Navíc 16:9 obsah se v MPEG-2 v DVB-T/S nebo na DVD taky přenáší v 720×576 a tam už je deformace nesnesitelná a bylo by nutné nastavovat AR ručně (u originálního MPEG2 to přehrávače umí automaticky). Nevím jak MKV, tam už je to možná lepší. Asi platí, že přeškálování je lepší se vyhnout pokud není nutné, protože přináší ztrátu kvality.Posledním nutným filtrem je přeškálování. Jak jsem uvedl v předchozí části, jestli chceme mít co nejvíc přenositelnou nahrávku ve formátu MPEG-4, je potřeba alespoň přenásobit šířku nahrávkyTo jsem nepochytal. Co je na 720x576 špatného?
Mám pocit, že co se týče klasických filmů, je takových věcí většina. Ale jak která televize.Souhlasím. Jen bych doplnil, že občas v televizi běží věci, kde deinterlace není potřeba - obvykle filmy nasnímané na filmový pás, který je z principu bez řádkování a 24 fps se na 50 převede zdvojením framů a lehkým zrychlením.nejčastěji tak jsou vysílány přímé přenosy, zprávy a podobněJá měl za to, že prokládání už je součástí standardu (proto MPEG-2 a ne MPEG-1) DVB-T (a nebo aspoň u nás) a téměř každá televize už jen provádí deinterlacing.
Tohle jsem kdysi zkoušel a nějak mi to nefungovalo, ale zase to zkusím.-vo pngTož to nevím. Ono to generuje docela rychle ty jednotlivé framy, dost zabírají a pak je ještě mazat? Když už nic, tak doporučuju aspoň -vf screenshot a klávesu S.
Jak jsem koupil, tak prodávám. Ale jak už jsem napsal, při větších rozměrech se dá jít dolů.Pro průměrnou doporučenou hodnotu CQ=0,25No, nevím. Přijde mi to zbytečně moc.
Chystám se na to, až to budu mít na čem přehrávat (myslím kromě počítače).Při druhém průchodu je dobré uložit do výsledného souboru poměr stran (parametr -force-avi-aspect)No a úplně nejlepší je nehackovat takový starý krám jako je AVI a ukládat to do něčeho normálního.
Dík za upřesnění, někde jsem to četl. A mplayer mi hlásí "MPEG layer-2, layer-3", tak nevím.Audio je ve formátu MP3, takže většinou stačí ho jen překopírovat.Audio je ve formátu MP2 (MPEG-1, Layer II přesněji) o 192kbps.
Jak jsem koupil, tak prodávámV pohodě. Prostě jen dobře mířená rada.
Ale jak už jsem napsal, při větších rozměrech se dá jít dolů.Spíš naopak.
Dík za upřesnění, někde jsem to četl. A mplayer mi hlásí "MPEG layer-2, layer-3", tak nevím.Jde o dekodér (čas od času se vyskytují i ve formě knihovny). Používá to jeden jak pro Layer-II, tak pro Layer-III.
Proč naopak? Když se komprimuje stejný obrázek ve dvakrát větším rozlišení, tak nemá čtyřikrát větší velikost, je to míň. Takže počet bitů na pixel je menší pro větší obrázky. U videa by to mělo být obdobné. JirkaAle jak už jsem napsal, při větších rozměrech se dá jít dolů.Spíš naopak.
Prakticky: Toto pravidlo zase neplatí tak úplně. A to hlavně díky blokové nátuře DCT a max. frekvenci, která se do bloku 8x8 nebo 16x16 vleze. Ano, 2× větší obrázek sice nezabere 2× nebo 4× více místa, ale také to není s tím udržováním kvantizačního koeficientu na stejných hodnotách nijak slavné a prostě musí růst pro zachování transparentnosti (a nebo aspoň stejné úrovně vjemu). A to nás tedy přivádí k otázce co je víc, zda-li menší rozlišení a vyšší kvantizační koeficient a nebo větší rozlišení a menší koeficient (logicky s rostoucím rozlišením by mělo být dáno více prostoru k projevení se energie ve vyšších frekvencích(tedy hranách kupř.) a více prostoru pro rozlití se energiím v nižších frekvencích). Psal jsem tu o tom zápisek (doporučuji začít od posledního odstavce), ale přijde mi že na důkladnou odpověď je tam tomu věnováno hodně málo místa, takže bude-li zájem, nabídnu skript, který snižuje rozlišení a přitom se snaží u obrázku zachovat podobnou velikost (nestoupne přes určitou hranici, ale volí kvantizační koeficient nejbližší nižší) a každý si může porovnat sám.
To podle me vypada jako pokus o sebevrazdu. Ukladani png za behu, cili pri 30 snimcich za sekundu? Nezkousel jsem, ale pri vyssim rozliseni nevim nevim. Jedine, ze by byla komprese skoro nulova, ale to abych pak radsi ukladal rovnou na externi terabajtovy disk.Tohle jsem kdysi zkoušel a nějak mi to nefungovalo, ale zase to zkusím.-vo pngTož to nevím. Ono to generuje docela rychle ty jednotlivé framy, dost zabírají a pak je ještě mazat? Když už nic, tak doporučuju aspoň -vf screenshot a klávesu S.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.