Chciałbym użyć nowego kodeka x265 (libx265) do zakodowania mojej kolekcji wideo.

W tym celu stworzyłem piękny skrypt bash pod linuxem, który ogólnie działa bardzo dobrze! Ale coś jest dziwne:

Zabraniam wyjściu ffmpeg na mój własny sposób. Z x264 („starym” ) wszystko działa dobrze. Ale gdy tylko używam x265, na moim terminalu zawsze pojawia się taki komunikat:

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 

Tak koduję swoje wideo z ffmpeg:

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

Wydaje mi się, że

<>/dev/null 2>&1 

i

-loglevel quiet 

zrobię to, ale najwyraźniej się mylę.

Jak mogę rozwiązać ten problem?

Dziękujemy za pomoc!

Odpowiedź

Wygląda na to, że ffmpeg nie mówi koderowi x265, aby użył loglevel, o którym mówisz ffmpeg posługiwać się. Więc jeśli chcesz, aby ffmpeg i koder x265 wewnątrz ffmpeg były ciche, musisz ustawić opcje poziomu dziennika dla obu z nich.

Jeśli masz polecenie ffmpeg, które wygląda tak:

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

Możesz dodać opcję log-level = error do listy parametrów x265 w następujący sposób:

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

Komentarze

  • Dziękujemy za odpowiedź. To jest rozwiązanie, którego szukałem! Nawet jeśli moja odpowiedź nadejdzie trochę za późno, chyba ^^
  • Osobiście preferuję przeglądanie postępów i ważnych błędów, jeśli takie występują. Dodatkowo, ponieważ ' eksportuję do x265, potrzebuję tej dodatkowej flagi. Osobiście uważam to za błąd i poziom loglevel powinien odnosić się do wszystkiego, ale ' jest naprawdę miło wiedzieć, aby skutecznie i poprawnie go stłumić. Dzięki!

Odpowiedź

<>/dev/null połączy tylko standardowe wejście i wyjście do /dev/null, a 2>&1 jest stosowane po <>/dev/null, skutecznie nic nie robiąc.

Zmiana na >/dev/null 2>&1 zrobi, co chcesz.

Komentarze

  • Dzięki! To rozwiązuje problem. Ale masz błąd w swojej odpowiedzi: napisałem 2>&1, a nie 1>&2, ale i tak… działa 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *