Portál AbcLinuxu, 8. května 2025 21:44
Po delší době jsem dostal z úkol menší projekt, jedná se o každodenní překonvertování mpeg2 souborů v plné kvalitě pal do něčeho co se dá šířit internetem, bylo mi prakticky zadáno že to musí být wmv3 (alias wmv9), který je prý jeden z nejlepších a hlavně ho podporují aktualizované stanice s WinXP a Vista nativně.
Trochu jsem nad tím ohrnoval nos, předcejen poslední WMV2 nebyl nic moc, ale nedalo se nic dělat, začal jsem hledat jestli je možné konvertovat video do WMV3 v Linuxu, bohužel jsem nic nenašel, ale jak jsem se tak proklikával na internetu, tak jsem našel program ffmpeg, který už mam dlouho nainstalovaný, jen jsem ho neuměl dostatečně dobře ovládat, ani nebyl důvod, videa jsem převáděl pomocí transcode (mencoder mi často dělal to co sem nechtěl a stále má pro mě spoustu much, které tu nebudu pitvat, obdobně jako mencoder nepoužívám ani mplayer).
Potom co jsem našel nějaké základní popisky k ffmpegu, prolistoval jsem dostupné kodeky a formáty.
ffmpeg -formatsa zjistil jsem už dříve zmíněnou nemožnost enkódovat do WMV3, ale zarazilo mě velké množství podporovaný kodeků (Debian Sid, používám pro apt normální multimediální zdroj a mohu říct že ffmpeg měl podporu snad všeho co se dá v Linuxu použít), zkusil jsem si pár kodeků i nastavení, celkově me nic moc nezaujalo. Potom jsem začal hledat na internetu, který kodek je v dnešní době vlastně nejlepší, našel jsem to co jsem už delší dobu věděl, všude se píše, že nejlepší kvalitu na daný bitový tok dostanu použitím standartu h.264, jehož free implementace v ffmpegu je x.264, ten jsem už dávno zkoušel a nepodával takové výsledky abych ho považoval za dobrý.
Nevzdal jsem se, celý den jsem nad tím přemýšlel a pročítal různé diskuze, dá se říct že je tento kodek stále v plenkách a jeho implementace v ffmpegu také není dokonalá, někdy kolem večera jsem narazil na jedno vlákno mailing listu k ffmpegu, Robert Swain zde uveřejnil názor ve kterém tvrdí, že kodek x.264 v ffmpegu je za normálních okolností špatně nastavený, odkazoval zde na svůj blog, kde uveřejnil svá nastavení. Trošku jsem zajásal a mrknul se tam, zjistil jsem že je to opravdu spousta parametrů, přepsal jsem je a teď po vyzkoušení mohu říct o kvalitě x.264 jen to, že se lidé na internetu nepletou, jedná se o zdaleka nejlepší kodek, který jsem měl kdy možnost použít!
Po podrobných testech jsem zjistil, že x.264 dosahuje lepší kvality než WMV3 s dvojnásobným datovým tokem. Zkoušel jsem porovnat i s Xvidem, opět dost podobné výsledky, s polovičním datovým tokem (700kb vs 1600kb) jsem dosahoval stále lepší kvality u x.264, opravdu mě nesmírně překvapilo jak kvalitní video se dá vejít do datového toku 130kb včetně zvuku s datovým tokem 32kb! (video se zvukem má takový datový tok, jako průměrná MP3, tj. datový tok 128kb).
Všechno má svá pro a proti, bohužel i tady jsou, i když je jich opravdu málo.
První vada na kráse, která ale nebude mít dlouhého trvání je náročnost na převod videa do x.264, používám dvou průchodový převod a tak to trvá přibližně stejně jako je délka videa, při rozlišení plného palu, do Xvidu mi to samé PC video převádí asi za 1/3 délky videa.
Druhá a bohužel mnohem podstatnější nevýhoda kodeku x.264 (případně formátu h.264) je to, že ve Windows se mi nepodařilo doinstalovat do Windows Media Playeru (9 i 11) podporu pro tento kodek, zatímco mplayerc dané video po doinstalování posledního ffdshow dekodéru a matroška splitteru normálně přehrál. Procházel jsem google sem a tam, ale zjistil jsem že k dispozici jsou hlavně placené verze (nebudu platit 30 dolarů za kodek na jeden PC kde si chci film přehrát a ani nebudu daný kodek nelegálně stahovat). V linuxu mi samozřejmě dané video v mém oblíbeném přehrávači xine-ui i v méně oblíbeném přehrávači mplayer jde bez jediného problému přehrát.
Tím tak trochu smutně končí pro mě velmi nadějný kodek v tomto projektu, nicméně už vím do jakého formátu budu v budoucnu převádět svá videa nahraná například z digitální kamery.
Ještě zde uvedu parametry, které používám pro převod videa v plném palu:
# nízká kvalita, datový tok 130kb/s ffmpeg -i "$INPUT" -f avi -pass 1/2 -an -vcodec h264 -s 360x288 -ab 32 -deinterlace \ -nr 400 -b 90k -bt 30k -maxrate 130k -coder 1 -flags +loop -chroma 1 \ -partitions +parti4x4+partp8x8+partb8x8 -me_method 5 -subq 1 -trellis 0 \ -refs 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -rc_eq 'blurCplx^(1-qComp)' -qmin 10 -qmax 51 -qdiff 4 "$OUTPUT"_small.avi ffmpeg -i "$INPUT" -f avi -pass 2/2 -acodec mp3 -ar 48000 -vcodec h264 -s 360x288 -ab 32 \ -deinterlace -nr 400 -b 90k -bt 30k -maxrate 130k -coder 1 -flags +loop -chroma 1 \ -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags2 \ +bpyramid+wpred+mixed_refs+8x8dct+brdo -me_method 8 -subq 7 -trellis 2 -refs 5 \ -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -rc_eq 'blurCplx^(1-qComp)' -qmin 10 -qmax 51 -qdiff 4 "$OUTPUT"_small_2.avi # střední kvalita, datový tok 300kb/s ffmpeg -i "$INPUT" -f avi -pass 1/2 -an -vcodec h264 -s 360x288 -ab 64 -deinterlace \ -nr 400 -b 220k -bt 40k -maxrate 280k -coder 1 -flags +loop -chroma 1 \ -partitions +parti4x4+partp8x8+partb8x8 -me_method 5 -subq 1 -trellis 0 \ -refs 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -rc_eq 'blurCplx^(1-qComp)' -qmin 10 -qmax 51 -qdiff 4 "$OUTPUT"_small.avi ffmpeg -i "$INPUT" -f avi -pass 2/2 -acodec mp3 -ar 48000 -vcodec h264 -s 360x288 -ab 64 \ -deinterlace -nr 400 -b 220k -bt 40k -maxrate 280k -coder 1 -flags +loop -chroma 1 \ -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags2 \ +bpyramid+wpred+mixed_refs+8x8dct+brdo -me_method 8 -subq 7 -trellis 2 -refs 5 \ -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -rc_eq 'blurCplx^(1-qComp)' -qmin 10 -qmax 51 -qdiff 4 "$OUTPUT"_small_2.avi # vysoká kvalita, datový tok 700kb/s ffmpeg -i "$INPUT" -f avi -pass 1/2 -an -vcodec h264 -s 720x576 -ab 96 -deinterlace \ -nr 400 -b 580k -bt 80k -maxrate 700k -coder 1 -flags +loop -chroma 1 \ -partitions +parti4x4+partp8x8+partb8x8 -me_method 5 -subq 1 -trellis 0 \ -refs 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -rc_eq 'blurCplx^(1-qComp)' -qmin 10 -qmax 51 -qdiff 4 "$OUTPUT"_small.avi ffmpeg -i "$INPUT" -f avi -pass 2/2 -acodec mp3 -ar 48000 -vcodec h264 -s 720x576 -ab 96 \ -deinterlace -nr 400 -b 580k -bt 80k -maxrate 700k -coder 1 -flags +loop -chroma 1 \ -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags2 \ +bpyramid+wpred+mixed_refs+8x8dct+brdo -me_method 8 -subq 7 -trellis 2 -refs 5 \ -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 \ -rc_eq 'blurCplx^(1-qComp)' -qmin 10 -qmax 51 -qdiff 4 "$OUTPUT"_small_2.avi
Poznámka: Někdo by mohl namítat, že by bylo lepší používat pro audio kodek AAC, který je modernější a prý lepší, než MP3. Na to mam jednoduchou odpověď, implementace AAC v ffmpegu není moc dobrá a tak podává tento kodek podstatně horší výsledky, než MP3 při stejném datovém toku (vlastno-ušně jsem si to vyzkoušel).
Na závěr jsem připravil 3 typy videí, každý typ 3x v jiném datovém toku (130, 300, 700) převedených přesně podle předchozích příkazů. Pokud máte zájem se na ně podívat, pak jsou k dispozici na této adrese.
Tiskni
Sdílej:
ripy delam stejne, akorat na video pouzivam stary dobry xvid
jinak matroska pack uz se nevyviji, nahradil ho CCCP intaluju ho vsude kde sou winy, je tam vazne vsechno pro prehravani videa, neco jako pro me yum install mplayer
Pro h.264 se ve windows dá použít QuickTime.
Jinak bych Vás ještě kapičku opravil. ffmpeg x264 není implementace h.264 ve ffmpegu, ale je to zcela samostatná implementace. ffmpeg obsahuje vlastní implementaci tohoto kodeku - ffh264. Tato implementace funguje ale jen pro dekódování videa. Pro fukční enkoding a větší výkon při dekódování se ffmpeg linkuje s x264 která se potom používá místo interního ffh264.
Použití QuickTime Playeru mě taky napadlo a hned jsem to vyzkoušel. Bohužel, na vystavených vzorcích se (alesopoň na mém systému) přehrávač ještě před začátkem přehrávání zasekl a bylo nutné ho odstřelit násilím. Nevylučuju ale, že je to jen chyba na mém systému. QTP skoro nepoužívám.
Jo, H.264 (což je mimochodem jen jiný název pro MPEG-4 Part 10, tedy MPEG-4 AVC profile) je pravděpodobně budoucnost. Hlavně pro HD video, které je při jeho datových tocích potřeba komprimovat skutečně hodně.
K H.264 bych měl možná ještě jednu podstatnější nevýhodu – náročnost dekódování. Na svém postarším Athlonu XP 2500+ s 512 MB RAM a Ati Radeonem 9600 mám problémy i s přehráváním 720p videa v H.264. O 1080p se mi může tak maximálně zdát.
Pro zájemce o ukázky HD videa v H.264 doporučuju galerii na stránkách Applu.
Mimochodem, docela mě tohle nastavení zaujalo (pro archivaci DVB-T nahrávek). Má ale rád MPlayer/MEncoder. Nebyl by někdo ochoten to nastavení přepsat pro použití s MEncoderem. Jsem na to moc línej.
Jo, H.264 (což je mimochodem jen jiný název pro MPEG-4 Part 10, tedy MPEG-4 AVC profile) je pravděpodobně budoucnost. Hlavně pro HD video, které je při jeho datových tocích potřeba komprimovat skutečně hodně.
H264 alias MPEG4 Part10 alias MPEG4 AVC JE budoucnost a nikdo se bez nej v nadchazejicich letech neobejde ani omylem. krome zjevne vyhodnosti diky kompresnimu pomeru a nevyhodnosti s ohledem na pozadavky na vykon pri dec/enc je tu neprehlednutelny fakt, ze H264 je spolu s VC1 a MPEG2 jednim z formatu povinnych pro prehravace HD DVD/Blu-ray.
K H.264 bych měl možná ještě jednu podstatnější nevýhodu – náročnost dekódování. Na svém postarším Athlonu XP 2500+ s 512 MB RAM a Ati Radeonem 9600 mám problémy i s přehráváním 720p videa v H.264. O 1080p se mi může tak maximálně zdát.
Ano, narocnost je svinstvo. Ja s P4-3,6G zkousel film 1920x816 (tedy progressive). s x264 kodekem nebo ve VLC to bylo zcela bez sance, CoreAVC naproti tomu plynule (ale v akcnejsich scenach jen tak tak, vytizenost cpu se dostavala az na 100% ).
Pro zájemce o ukázky HD videa v H.264 doporučuju galerii na stránkách Applu.
galerii ma i mrkvosoft, ono to jejich WMV9 je vicemene totez jako VC1, takze za vyzkouseni to take stoji
Ano, narocnost je svinstvo. Ja s P4-3,6G zkousel film 1920x816 (tedy progressive). s x264 kodekem nebo ve VLC to bylo zcela bez sance, CoreAVC naproti tomu plynule (ale v akcnejsich scenach jen tak tak, vytizenost cpu se dostavala az na 100%).
Zajímavý, na mym P4@2GHz jede v mplayeru s x264 kodekem naprosto bezproblémově i video 1920 x 1080
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.