Chtěl bych použít nový kodek x265 (libx265) ke kódování své sbírky videí.

Za tímto účelem jsem vytvořil krásný bash skript pod linuxem, který obecně funguje velmi dobře! Ale něco je divné:

Zakazuji výstup ffmpeg, aby se ozýval po mé vlastní cestě. S x264 (ten „starý“) ) vše funguje dobře. Ale jakmile použiji x265, dostanu na svůj terminál vždy tento druh výstupu:

x265 [info]: HEVC encoder version 1.7 x265 [info]: build info [Linux][GCC 5.1.0][64 bit] 8bpp x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 x265 [info]: Main profile, Level-2.1 (Main tier) x265 [info]: Thread pool created using 2 threads x265 [info]: frame threads / pool features : 1 / wpp(5 rows) x265 [info]: Coding QT: max CU size, min CU size : 64 / 8 x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra x265 [info]: ME / range / subpel / merge : hex / 57 / 2 / 2 x265 [info]: Keyframe min / max / scenecut : 25 / 250 / 40 x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2 x265 [info]: b-pyramid / weightp / weightb / refs: 1 / 1 / 0 / 3 x265 [info]: AQ: mode / str / qg-size / cu-tree : 1 / 1.0 / 64 / 1 x265 [info]: Rate Control / qCompress : CRF-28.0 / 0.60 x265 [info]: tools: rd=3 psy-rd=0.30 signhide tmvp strong-intra-smoothing x265 [info]: tools: deblock sao 

Toto je způsob, jakým kóduji své video s ffmpeg:

ffmpeg -i /input/file -c:v libx265 -c:a copy -loglevel quiet /output/file.mp4 <>/dev/null 2>&1 

myslel jsem si, že

<>/dev/null 2>&1 

a

-loglevel quiet 

to udělá, ale očividně se mýlím.

Jak mohu tento problém vyřešit?

Děkuji za vaše pomoc!

Odpověď

Vypadá to, že ffmpeg neříká kodéru x265, aby použil loglevel, kterému říkáte ffmpeg použití. Pokud tedy chcete, aby ffmpeg a kodér x265 v rámci ffmpeg byly tiché, musíte pro oba nastavit možnosti na úrovni protokolu.

Pokud máte příkaz ffmpeg, který vypadá takto:

ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params parameter1=value:parameter2=value outputfile.xyz 

Do seznamu parametrů x265 můžete přidat možnost log-level = error takto:

ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params log-level=error:parameter1=value:parameter2=value .... 

Komentáře

  • Děkujeme za odpověď. To je řešení, které jsem hledal! I když moje odpověď přijde příliš pozdě, myslím, že ^^
  • Moje osobní preference je prohlížet si pokrok a důležité chyby, pokud nějaké existují. Vzhledem k tomu, že ' m exportuji na x265, potřebuji tento další příznak. Osobně to považuji za chybu a loglevel by se měl týkat všeho, ale je opravdu dobré ' efektivně a správně potlačit. Děkujeme!

Odpověď

<>/dev/null připojí pouze standardní vstup a výstup do /dev/null a 2>&1 se použije po <>/dev/null, ve skutečnosti nic nedělá.

Změnou na >/dev/null 2>&1 uděláte, co chcete.

Komentáře

  • Díky! Tím se problém vyřeší. Ale ve své odpovědi máte chybu: napsal jsem 2>&1 a ne 1>&2 ale stejně .. funguje to 🙂

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *