Testowałem większość innych proponowanych odpowiedzi na to pytanie. Wnioski z danych testowych są poniżej. Oto proponowane odpowiedzi, które przetestowałem:
(BR) Zmodyfikuj szybkość transmisji, używając:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) Zmieniaj współczynnik stałej szybkości, używając:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) Zmień rozmiar ekranu wideo (na przykład na połowę jego rozmiaru w pikselach), używając:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) Zmień profil H.264 na „podstawowy”, używając:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) Użyj domyślnego przetwarzania ffmpeg, używając:
ffmpeg -i $infile $outfile
DANE
- „rozmiar” - procentowy rozmiar pikseli przekonwertowanego wideo w stosunku do oryginału.
- „bitrate” - szybkość transmisji oryginalnych i przekonwertowanych filmów.
- „definicja” - rozmiar filmu w pikselach.
- „konwersja” - czas na konwersję wideo w kilka sekund.
Obliczyłem docelową szybkość transmisji dla (BL) przy użyciu proponowanej metody.
=== Plik A - Jak węzeł pomaga napędzać Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== Plik B - Korzystanie z GraphQL z Angular _ By - Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
WNIOSKI
Metoda (SZ) jest zdecydowanie najszybszą metodą. Było 2 do 4 razy szybsze. Może to stanowić poważny problem w przypadku filmów o wysokiej rozdzielczości, ponieważ konwersja wszystkich innych metod trwała dłużej niż rzeczywista długość filmu! Na przykład metoda (CR) zajęła 53 minuty, aby przekonwertować 21-minutowe wideo.
Metoda (SZ) jest zdecydowanie najlepszą metodą, jeśli definicja wideo jest większa niż definicja ekranu, na którym będzie wyświetlany. Na przykład, jeśli Twój telefon może wyświetlać tylko obraz 1080p, wysyłanie go do filmu o rozdzielczości 3840 x 2160 jest po prostu marnotrawstwem. Najlepiej byłoby zmniejszyć jego połowę do 1080p.
Niektóre z proponowanych odpowiedzi W rzeczywistości ZWIĘKSZYŁY rozmiar niektórych filmów. Na przykład metoda (BR) ponad dwukrotnie zwiększyła rozmiar próbki 1080p. Sprawił jednak, że rozmiar 2160p stanowił jedną trzecią. W przypadku próbki o wysokiej rozdzielczości wszystkie metody (CR), (BL) i (DF) ZWIĘKSZYŁY rozmiar filmu.
Prawidłowa (lub najlepsza) odpowiedź
Zawsze najlepiej jest najpierw obniżyć rozdzielczość do maksimum obsługiwanego przez docelowy ekran.
Jeśli chcesz jeszcze bardziej zmniejszyć rozmiar pliku, będzie to zależeć od osobistych wyborów. Możesz zmniejszyć zawartość informacji lub zwiększyć kompresję.
Możesz bardziej obniżyć rozdzielczość, jeśli nie dotyczy to ciebie.
Jeśli wideo nie zawiera scen szybkiej akcji, możesz zmniejszyć szybkość klatek.
Jeśli masz wydajny procesor, a jedynym problemem jest miejsce, możesz zwiększyć współczynnik kompresji.
Szybkość transmisji jest kombinacją wielu czynników. Więc samo powiedzenie ffmpeg, aby obniżyło szybkość transmisji, może nie dać oczekiwanych rezultatów.
Innym sposobem obniżenia zawartości informacji jest zmniejszenie głębi kolorów. Jak to zrobić, nie zostało jeszcze omówione.
ffmpeg
strona podręcznika pokazuje-fs
opcję ograniczenia rozmiaru wyjściowego, czy coś takiegoffmpeg -i in.avi -fs 100M out.avi
działa?