Ale zastanawiam się, czy istnieje sposób na określenie „dobrej” docelowej szybkości transmisji…
Dobrą docelową przepływnością jest przepływność, która:
- jest obsługiwany przez sieć, z której przesyłany jest materiał (np. sieć 3G, domowe WiFi itp.), co jest dość łatwe do obliczenia
- wygląda dobrze was , który jest bardzo subiektywna miara
22 Mbit / s lub 45 Mbit / s są rzeczywiście dość wysokie dla przeciętnego użytkownika, a zwłaszcza dla już skompresowanego wideo, takiego jak h.264. Na pewno możesz iść dalej i zmniejszyć szybkość transmisji do „rozsądnej” wartości, zawsze w odniesieniu do tego, na ile możesz sobie pozwolić i ile jakości chcesz stracić.
Możesz również zmienić rozmiar wideo 1080p na 720p, jeśli tak naprawdę nie potrzebujesz rozmiaru lub nie masz możliwości przetwarzania, aby go edytować.
… Lub jeśli jest jakiś sens w próbach uzyskania zmiennej przepływności
Punktem stałej szybkości transmisji jest dostosowanie się do scenariusza mediów strumieniowych, w którym występuje wąskie gardło ograniczające maksymalną przepływność przesyłanego wideo. W dzisiejszym świecie multimediów nie ma to już sensu.
Kiedy wyciskasz wideo na stałą liczbę bitów na sekundę, w zasadzie mówisz koderowi, aby zawsze używał tej samej ilości bitów do kodowania tej samej ramy czasowej. Czy to najlepsze podejście? Jak już się domyślacie, tak nie jest. Cytując Przewodnik CRF od hamulca ręcznego (wrócę do tego później):
Oko dostrzega więcej szczegółów w nieruchomych obiektach niż w ruchu. Z tego powodu kompresor wideo może zastosować większą kompresję (upuść więcej szczegółów), gdy rzeczy się poruszają, i zastosować mniejszą kompresję (zachować więcej szczegółów), gdy rzeczy są w ruchu. Subiektywnie wideo wydaje się mieć wyższą jakość.
Tak, to ma sens, aby użyć zmiennej przepływności, kiedy tylko możesz. Sprawi, że wideo będzie wyglądać lepiej, nawet przy tym samym rozmiarze pliku, co wideo o stałej przepływności.
Co więcej, większość koderów - najsłynniejszym z nich jest x264 - często działa bardzo źle, gdy mówisz im, aby używały stałej szybkości transmisji. Lepiej dać im nieco więcej „swobody” w sensie, ile bitów chcą wydać na ramkę. W końcu to zadanie enkodera, a nie ciebie. I to się nazywa „stała jakość”.
Dosyć tego - co to znaczy w praktyce? Jeśli używasz FFmpeg do kodowania filmów, to już używasz wystarczająco dobrego narzędzia. Jeśli teraz masz także zainstalowany x264 i korzystasz z najnowszej wersji obu, to korzystasz z jednego z najlepszych koderów, który jest obecnie dostępny za darmo. Zamiast kodować ze stałą przepływnością, pozwól x264 wybrać, ile chce wydać. Zrób to za pomocą opcji Constant Rate Factor .
W bardzo prostym przypadku oznacza to ustawienie wartości między 17 a 23. Wybieram MP4 jako pojemnik wyjściowy zamiast MOV, ponieważ dostępne są lepsze narzędzia do remultipleksowania:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
Im niższa wartość, tym lepsza jakość i większa wydajność. Odwrotnie, im wyższa, tym niższa jakość. W tym samym czasie oczywiście zmniejszysz średnią potrzebną szybkość transmisji. Sprawdzić instrukcji kodowania x264 uzyskać więcej informacji na temat ffmpeg
.
Twoim zadaniem jest teraz znalezienie wartości CRF, która:
- zmniejsza ogólną szybkość transmisji do punktu, na który Cię stać
- nie obniża zbytnio jakości, dzięki czemu wideo nadal wygląda dobrze
Tak, wymaga to dużo kodowania i prób i błędów, ale jest to codzienna sprawa, gdy tunujesz i kodujesz wideo.
Aha, a jeśli nie podoba Ci się wiersz poleceń, Handbrake to darmowe narzędzie na wiele platform, które robi dokładnie to samo. Ma nawet suwak CRF:
-qscale
. W przypadku MPEG * skala jest liniowa w zakresie od 1-31 (31 to najgorsza jakość), a podwojenie wartości spowoduje około połowę szybkości transmisji. Wartość 2 można uznać za wizualnie bezstratną. 3-5 jest zwykle dobrą równowagą, ale oczywiście jakość jest subiektywna i wystarczy spróbować.Wypróbuj HandBrake CLI
Chciałem zmniejszyć niektóre pliki MOV i nie chciałem się uczyć wszystkich szczegółów na temat opcji wideo. Korzystałem z interfejsu HandBrake CLI . Ustawienia wstępne są ładne:
W moim przypadku działało to ładnie:
Bez ustawienia wyjściowego wyjście było bardzo małe, ale nie dobrej jakości. Ustawienie wstępne „Normalne” wyglądało dla mnie dobrze, ale możesz zobaczyć inne dostępne za pomocą
HandBrakeCLI --preset-list
lub dostosować wszystkie opcje, jeśli wolisz.źródło