Nagrałem grę przy użyciu fraps. Nagrane wideo wyglądało świetnie.
Następnie zredagowałem wideo i zakodowałem je bezstratnym kodekiem Huffyuv. Film wyglądał świetnie.
W końcu zakodowałem wideo przy pomocy x264 w FFmpeg i kolory wyglądały na wyprane.
Zrzuty ekranu:
Huffyuv (wygląda świetnie):
x264 (wygląda na wypranego):
Ustawienia x264:
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -b:v 1000k -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -b:v 1000k -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
Kiedy kodowałem przy pomocy x264, otrzymałem następujące ostrzeżenie:
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
Jak naprawić kolory, aby wyglądały tak samo jak w oryginalnym wideo?
AKTUALIZACJA:
Próbowałem ustawień x264 Mulvya (kolory nadal wyglądają na wyprane):
ffmpeg -y -color_range 2 -i "D:\Project\TestHuffyuv.avi" -vf scale=in_range=full:out_range=tv -c:v libx264 -b:v 1000k -color_range 1 -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -color_range 2 -i "D:\Project\TestHuffyuv.avi" -vf scale=in_range=full:out_range=tv -c:v libx264 -b:v 1000k -color_range 1 -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
wypróbowałem przełącznik x-264 „-pix_fmt yuv420p” (obraz wygląda ciemniej, kolory nadal są wyprane)
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuv420p -b:v 1000k -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuv420p -b:v 1000k -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
wypróbowałem przełącznik „-pix_fmt yuvj420p” x264 (Obraz wygląda ciemniej niż w oryginale):
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuvj420p -b:v 1000k -pass 1 -passlogfile D:\Project\Stats -f mp4 NUL
ffmpeg -y -i "D:\Project\TestHuffyuv.avi" -c:v libx264 -pix_fmt yuvj420p -b:v 1000k -pass 2 -passlogfile D:\Project\Stats D:\Project\FFmpeg_MP4.mp4
Pełne wyjście konsoli: http://pastebin.com/3cJNvVjL
-pix_fmt yuvj420p
dodanymi do oryginalnych poleceń. Jeśli nie ma zmian, pokaż pełne wyjście konsoli.Istnieje coś takiego jak kompresja kolorów. Pełny RGB jest tym, co chcesz wybrać, aby zachować cały kolor. YUV422 lub YUV420 zauważalnie zabiorą dużo kolorów (YUV444 robi trochę, ale prawie nie do odróżnienia). Powodem, dla którego wyglądało dobrze na Fraps i HuffYuv, jest to, że RGB jest ich domyślną przestrzenią kolorów, co oznacza brak kompresji kolorów. W x264 powinna być YUV 420, 422, 444, RGB, a nawet ta SZARA opcja. Tak, kodek wideo może z łatwością zachować wszystkie kolory, jeśli zostanie ustawiony w ten sposób.
źródło