Codziennie nagrywam kilka godzin materiału wideo, które ustawiam w kolejce do kodowania ffmpeg
. Używam tego veryslow
ustawienia wstępnego x265
, więc kodowanie jednej godziny filmu może potrwać do 20 godzin lub dłużej.
Ponieważ mój komputer pracuje dzień i noc, zastanawiam się, czy ffmpeg
ma sposób na wstrzymanie i wznowienie kodowania? Korzystam Terminal
z systemu OS X.
Jeśli tak, to czy mogę kontynuować kodowanie nawet po wyłączeniu terminalu i ponownym uruchomieniu komputera? Myślę, że sesja Terminal jest przywracana po ponownym zalogowaniu w OS X, przynajmniej historia Terminalu.
ffmpeg
zatrzymuje się z błędem (decode_band_types: Input buffer exhausted before END element found
lub /Invalid NAL unit size
i ). Może to ma związek ze skokiem w czasie, nie wiem.Error writing trailer
Protocol error
W systemie Windows naciśnięcie klawisza „Pauza / Przerwa” (klawisz w prawym górnym rogu) spowoduje jego wstrzymanie. Enter zostanie wznowione.
Jeśli to nie działa, kliknij okno wiersza polecenia, aby ustawić fokus.
źródło
Na dzień 30 września 2015 r . Nie wydawało się to możliwe . Sugerowałbym segmentację pliku źródłowego, kodowanie segmentów, a następnie zszywanie powstałych plików.
To nie jest prawdziwa funkcja pauzy / wznowienia, ale fragmentaryczny podział pozwoli ci na przerwę w kodowaniu.
Zwięzły przegląd poleceń do wydania:
Podziel plik na części
To powinno utworzyć plik 000.mp4, plik001.mp4 i tak dalej. Z powodu tego, jak działa segmentator - tnie tylko w ramkach I - te pliki nie będą miały dokładnie
n
kilku sekund i część wideo może nie być poprawnie odtwarzana, ale wszystkie dane są tam i możesz przekonwertować każdą z części, np.Dołącz ponownie do zakodowanych części
Utwórz plik tekstowy i wpisz nazwę każdego renderowanego pliku w ten sposób
I biegnij
źródło
Sugeruję, zamiast wstrzymywać, proces kodowania ma najmniejszy priorytet systemowy (inaczej „ renice ”), dzięki czemu możesz codziennie pracować wygodnie, a kodowanie będzie odbywać się w tle z nieużywanymi zasobami systemowymi. Dzięki temu kodowanie będzie przebiegać bezproblemowo 24 godziny na dobę, 7 dni w tygodniu, bez zakłóceń i bez konfliktu z codzienną pracą
ponieważ AFAIK OSX nie ma polecenia pidof, musisz znać numer procesu ffmpeg (PID)
Następnie można zmienić tą proces do bezczynności tle
w razie potrzeby możesz również przywrócić proces do bardziej agresywnego priorytetu na pierwszym planie
źródło
Zawieszenie wątku działa również w systemie Windows, nie z ctrl+ Z, ale w menedżerze zasobów możesz go również wznowić.
źródło
(To dla Linuksa)
Jak zapewne wszyscy wiecie, naciśnięcie „q” kończy plik nagrania.
ffplay ma opcję „p”. Dlaczego ffmpeg nie ma tego samego? Może dlatego, że może prowadzić do desynchronizacji między wideo a dźwiękiem? ...
Po prostu ffmpeg-encode do x264-aac-mkv za pomocą crf (23) i zawsze z tymi samymi warunkami wideo, „wyjdź” (q) z nagrań i połącz wszystkie segmenty w określonym katalogu, w którym znajduje się ten skrypt, do 1 pliku w trybie streamcopy za pomocą tego skryptu bash:
Następnie sprawdzam powstały scalony film i wklejam go do innego katalogu. Segmenty są usuwane z katalogu scalania.
Ale bezproblemowy przycisk „Wstrzymaj i wznów” rzeczywiście byłby mile widziany;)
źródło
To tylko pomysł, ale jeśli masz trochę budżetu, dobrym pomysłem byłoby uaktualnienie procesora (do Intel 8. generacji) lub jeszcze lepiej karty graficznej (do NVIDIA GTX 1050 lub wyższej), aby można było kodować h.265 / HEVC z przyspieszeniem sprzętowym zamiast intensywnego procesora
x265
. Twoje kodowanie wideo zostanie zakończone w czasie krótszym niż 20 godzin, co również obniży koszty energii elektrycznej.źródło