Mam 950 plików PNG, które mają stać się pojedynczymi klatkami na 38-sekundowej ścieżce wideo - 25 klatek na sekundę. Nazwy plików są identyczne, z wyjątkiem numeru sekwencyjnego, jak to zwykle jest w takich przypadkach.
Chcę stworzyć kontener o szeroko obsługiwanym formacie, najlepiej WebM, jeśli wszystkie kryteria mogą być z nim spełnione, lub na przykład MPEG-4, z kodekiem, który jest obsługiwany przez nowoczesne przeglądarki do odtwarzania, z tej serii obrazów PNG I mieć. Problem polega na tym, że kolory są przesunięte, a kolor tła w dekodowanym wideo nie jest już zgodny z tą samą trypletą RGB próbkowaną z koloru tła na obrazach PNG. Powoduje to, że wideo wystaje z zamierzonego tła na mojej stronie HTML, na której osadzone jest wideo.
Wypróbowałem prosty:
ffmpeg -f image2 -i image%03d.png output.webm
co faktycznie dało mi ścieżkę wideo VP9 25 fps zapakowaną w pojemnik WebM.
Obrazy PNG mają styl animacji, z jednolitym tłem i prostymi kształtami animującymi na pierwszym planie. Wyglądają na nieoznaczone kolorami (tak mówi mi Adobe Bridge, zakładam, że oznacza to brak osadzonego profilu kolorów lub odniesienie do jednego). Problem z moją powyższą próbą polega na tym, że pomimo tego, że kontener jest odtwarzany w Chrome, kolor tła próbkowany z obrazu PNG, z trypletem RGB #ED4D56
, nie percepcyjnie pasuje do koloru tła, który pojawia się w odtwarzanym filmie.
Czy jest to nieunikniony efekt uboczny konwersji kolorów z RGB na YUV (kodowanie) na RGB (odtwarzanie)? Czy jest jakiś sposób na złagodzenie tego? Nie nalegam, aby klatki w ścieżce wideo były kodowane za pomocą RGB, przypuszczam, że YUV jest w porządku, o ile nowoczesna przeglądarka odtwarzająca te klatki wytwarza ten sam (z niewielkim marginesem błędu) tryplet RGB podczas dekodowania i wyświetlania ramki.
Moje pytanie brzmi: za pomocą jakiego wiersza polecenia ffmpeg
mogę spróbować to złagodzić? Jestem otwarty, aby przełączyć kodek wideo, format pikseli, włączyć zarządzanie kolorami w ffmpeg, jeśli istnieje, itp.