Na jakie parametry powinienem patrzeć, aby zmniejszyć rozmiar pliku .MOV?

12

Mój Canon 60D tworzy pliki .MOV podczas nagrywania wideo i dowiedziałem się, że kontener .MOV ma strumień wideo H264 i strumień audio PCM.

Użyłem ffmpeg i GSpot do obejrzenia niektórych moich filmów i widzę, że wydają się być dość dużymi przepływnościami (22 000 kb / s dla 640 x 480, 45 000 dla 1920 x 1080).

Chciałbym zmniejszyć rozmiar plików, ale utrzymywać dość wysoką jakość. Bawiłem się najprostszą rzeczą, jaką mogłem wymyślić, zmniejszając szybkość transmisji i robi to, czego się spodziewałem: zmniejszyłem przepływność o połowę, a rozmiar pliku to około połowy. Zastanawiam się jednak, czy istnieje sposób na określenie „dobrej” docelowej szybkości transmisji bitów, czy też jest jakiś sens w próbach uzyskania zmiennej przepływności.

Totem - Przywróć Monikę
źródło

Odpowiedzi:

21

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:

wprowadź opis zdjęcia tutaj

slhck
źródło
Jeśli chodzi o szczegóły poruszającego się obiektu, czy nie jest on regularnie przesadzany w kompresji wideo, czy po prostu pamiętam złe przykłady? Jak zauważalny wzrost szczegółowości, gdy aparat przestanie panoramować itp.
Daniel Beck
Jest to w rzeczywistości dość powszechne zjawisko znane jako „stabilizacja”. Na przykład, gdy widzisz, że blokowanie znika. Jest to typowe w scenariuszu o niskiej przepływności, w którym zmiana różnicy ruchu jest zbyt szybka, aby dostosować szybkość kontroli. Zakładam, że kodowanie dwuprzebiegowe mogłoby tu pomóc, ale prawdopodobnie niewiele. Nie wiem, czy można całkowicie pozbyć się tego rodzaju artefaktów.
slhck 30.01.12
W przeszłości korzystałem z Handbrake, konwertując DV avis z kamery wideo do DivX i mp4, ale łatwiej mi było pracować z wierszem poleceń, próbując wymyślić moje opcje przejścia z .mov na h264 mp4s. Czy istnieje odpowiednik opcji -crf podczas tworzenia plików DivX? (czy to powinno być kolejne pytanie?)
Totem - Przywróć Monikę
@ Ward Możesz użyć -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ć.
llogan
Ładny! Parę pytań. (1) co oznacza liczba, po której następuje „p” w „1080p wideo do 720p”? (2) x264 używa zmiennej przepływności, ale dlaczego opcja w ffmpeg nazywa się Constant Rate Factor? Dzięki!
Tim
2

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:

HandBrake oferuje fabrycznie nowe, fabrycznie zaprogramowane ustawienia, które są dokładnie takie same, jak wbudowane ustawienia w MacGui.

W moim przypadku działało to ładnie:

HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"

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-listlub dostosować wszystkie opcje, jeśli wolisz.

Nathan Long
źródło