Czy kodowanie nieskompresowanego wideo do wyższej przepływności zajmuje więcej czasu (niż do niższej przepływności)?
Jeśli tak, dlaczego - wydaje się, że koder powinien wymagać mniejszego wysiłku, ponieważ nie musi tak mocno kompresować pliku?
Jeśli nie, dlaczego - czy więcej jakości nie oznacza więcej pracy dla enkodera?
Po prostu nie mogę się tym zająć.
ffmpeg
video-encoding
bitrate
Leonid Szewcow
źródło
źródło
Odpowiedzi:
Kodowanie stratne to w zasadzie kompresja, uzyskiwana za pomocą różnych algorytmów. Rozważmy przypadkowe przypadki i stamtąd dedukujemy odpowiedź na twoje pytanie.
Wyobraź sobie, że Twoje wejście wideo powinno być zakodowane w najlepszej jakości. Co to dokładnie znaczy? Cóż, bierzemy każdy piksel bez zmian i przechowujemy go w ten sposób. Ile czasu potrzebujemy na to? Prawie nic. To by było najszybsze.
Następnie możesz spróbować zminimalizować różnice między ramkami, kodując tylko ich względne różnice. Przewidzieć ramki B z ramki A , a następnie przechowywać w pozostałości po odjęciu przewidywanie z B . To daje tę samą jakość, ale wydłuża czas przetwarzania. Daje również znacznie mniejszy plik.
Co jeśli chcesz jeszcze bardziej zmniejszyć rozmiar pliku? W tym miejscu pojawiają się różne algorytmy kwantyzacji i optymalizacji. Można obliczyć ilość szczegółów przestrzennych i czasowych w obszarze klatek, a następnie dynamicznie dostosować względną jakość tej części filmu, aby była postrzegana z pewnym poziomem jakości . To jest tryb CRF w x264 . W takim przypadku, jeśli chcesz wysokiej jakości, enkoder nie musi wiele robić - nie musi tak wiele „wyrzucać”, mówiąc wprost.
Zasadniczo, gdy powiesz koderowi, że nie musi tak ciężko pracować nad optymalizacją jakości, będzie to szybsze.
Ale może powinniśmy zrobić mały test. Wziąłem 30 sekundową próbkę filmu i zakodowałem go za pomocą x264, używając różnych ustawień CRF na serwerze. Oto potrzebny czas:
To samo dla przepływności:
źródło