Korzystam z GUI (prawy przycisk myszy => kompresuj), aby spróbować skompresować plik .tar zawierający 3 filmy o łącznej pojemności 1,7 GB (.H264 MP4). gzip, lrzip, 7z itp. nie mają wpływu na rozmiar pliku, a skompresowany folder ma również 1,7 GB.
Następnie spróbowałem uruchomić lrzip z wiersza poleceń (na wypadek, gdyby to był problem z GUI) i użyłem flagi -z (ekstremalna kompresja), i to był mój wynik.
Jak pokazuje współczynnik kompresji, rzeczywisty rozmiar skompresowanego folderu jest większy niż oryginał! Nie wiem, dlaczego nie mam szczęścia, w szczególności lrzip powinien być skuteczny zgodnie z losowymi recenzjami, które przeczytałem i oficjalnymi dokumentami (pliki większe niż 100 MB, im większe, tym lepiej) - patrz https: //wiki.archlinux. org / index.php / Lrzip
Dlaczego nie mogę kompresować plików?
Odpowiedzi:
Jak wspomniano powyżej w komentarzu @pram, filmy MP4 są już skompresowane, a inne formaty wideo prawdopodobnie również do pewnego stopnia wykorzystują kompresję. Dlatego próba ich skompresowania nie spowoduje niewielkiego (jeśli w ogóle) zmniejszenia rozmiaru (dotyczy to, przynajmniej częściowo, zdjęć i muzyki). W takim przypadku wygląda na to, że metadane (dla samego skompresowanego pliku) mogą powodować wzrost. Jedynym formatem kompresji, który może (i jest to silna siła) spowodować pewne zmniejszenie, jest xz.
Z drugiej strony, jeśli chcesz zmniejszyć rozmiar tych filmów, zamiast tego spróbuj ponownie zakodować filmy przy użyciu czegoś takiego jak hamulec ręczny.
źródło
Naprawdę fakt, że pliki są już skompresowane, nie jest kluczowym problemem. Chodzi o to: kompresja ogólnie działa tylko wtedy, gdy dane zawierają w sobie pewną nadmiarowość . Tak jest praktycznie zawsze w przypadku nieskompresowanych plików - jednak niekoniecznie jest oczywiste, czym jest nadmiarowość. Algorytmy kompresji ogólnego przeznaczenia są ukierunkowane przede wszystkim na rzeczy oczywiste w plikach tekstowych: wiele słów pojawia się nie tylko raz, ale wiele razy w identycznej formie, być może można łączyć frazy itp. Itd. Algorytmy są całkiem dobre w uogólniając to do czegokolwiek, od list numerów telefonów zakodowanych w ASCII, po chińskiej poezji, po binarny kod maszynowy, ale nie mogą one działać dla żadnego rodzaju danych. W szczególności pliki multimedialne są koncepcyjniedane analogowe w hałaśliwym odwzorowaniu cyfrowym. Oznacza to, że tak naprawdę nie ma żadnej nadmiarowości pliku tekstowego: niektóre motywy mogą się powtarzać, ale zawsze z nieco inną konfiguracją szumu czujnika. Właśnie dlatego wszystkie skompresowane formaty obrazu / AV wykorzystują sprytnie wybraną transformację jako pierwszy krok kodowania, zwykle oparty na DCT lub falkach . Te przekształcenia z grubsza przenoszą fragmenty obrazu i fragmenty szumu w różne lokalizacje, dzięki czemu można je łatwo rozdzielić, a dzięki kompresji stratnej zachowujesz tylko te informacje, które Twoim zdaniem są najważniejsze, co nie obejmuje szumu, a „ dobra informacja ”ma wiele redundancji. (Nie tak to działa, ale w pewnym sensie.)
Gdyby kompresory ogólnego zastosowania zastosowały te transformacje, efekt byłby odwrotny: większość informacji cyfrowych zostałaby błędnie zaklasyfikowana jako rodzaj szumu, ponieważ brakuje w niej „gładkiej” struktury, którą można znaleźć w sygnałach analogowych. A po stratnej kompresji wideo oczywiście nie można już znaleźć analogowej płynności ani cyfrowej rekurencji (gdyby tak było, kodeki używałyby innego stopnia bzip lub czegoś takiego!)
źródło
Powodem, dla którego nie masz szczęścia, jest to, że mp4 jest już skompresowany, nie możesz go dalej kompresować. Wszystko, co robisz, to dodawanie do pliku informacji o nagłówku formatu kompresji.
Ponieważ pliki są już skompresowane i nie można ich dalej skompresować, powoduje to zwiększenie rozmiaru pliku, ponieważ wszystko, co robisz, to utrzymywanie tych samych informacji i dodawanie kilku dodatkowych bajtów informacji w nagłówku.
źródło
To dobry przykład zasady szufladki .
Ponieważ plik jest już (stratny) skompresowany, nigdzie nie ma prawie żadnej redukcji, co oznacza, że masz już zerowy zysk netto. Jak wspomniano inni, sam skompresowany format ma pewną, zwykle nieznaczną utratę własnych metadanych. Wszystko to razem oznacza, że prawdopodobnie nie ma szuflady w zestawie równych lub mniejszych plików, a zatem skompresowane dane mieszczą się w zestawie większych plików.
źródło
Jeśli chcesz skompresować te pliki, musisz obniżyć jakość.
Nie wiedząc, jak długo i jaki format i typ zawartości tych plików trudno jest stwierdzić, czy w tych plikach jest miejsce do zmniejszenia bez widocznej utraty jakości.
BluRays z wideo 1080p jest zwykle większy niż 25 GB, więc nie jest mało prawdopodobne, że masz już optymalny stosunek jakości do rozmiaru dla H.264.
Możesz spróbować użyć
ffmpeg
lubavconv
przekonwertować pliki.Możesz zacząć
ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4
anconv
Komenda będzie działać podobnie.Zwiększ
-crf
wartość, aby zmniejszyć rozmiar i jakość pliku, nie polecam żadnych więcej niż 25.Możesz zmienić ustawienie wstępne na
slow
lubmedium
zwiększyć prędkość, ale rozmiar pliku ucierpi w porównaniu do,slower
a nawetveryslow
(jeśli jesteś bardzo cierpliwy!).Więcej ustawień można znaleźć tutaj: http://mewiki.project357.com/wiki/X264_Settings
Polecam trzymać się z dala od większości, ponieważ ustawienia wstępne zapewniają rozsądne wartości domyślne, z
-tune
wyjątkiem tego.Wypróbuj denoiser, jeśli treść jest filmem (
-vf hqdn3d
) , możesz poprawić jakość wizualną w porównaniu do używania wysokiej-crf
wartości.Zmniejsz zawartość
-vf scale=-1:720
do 720p i-vf scale=-1:480
480p, aby poprawić szybkość kodowania i utrzymać jakość.źródło