Mengkompresi video membuat file lebih besar

17

Saya telah menggunakan GUI (klik kanan => kompres) untuk mencoba dan kompres .tar yang berisi 3 video total 1,7gb (.H264 MP4s). gzip, lrzip, 7z dll. semua tidak melakukan apa-apa dengan ukuran file dan folder terkompresi juga 1,7 gb.

Saya kemudian mencoba menjalankan lrzip dari baris perintah (kalau-kalau itu masalah gui), dan menggunakan flag -z (kompresi ekstrem), dan ini adalah output saya.

masukkan deskripsi gambar di sini

Seperti yang ditunjukkan oleh rasio kompresi, ukuran sebenarnya folder terkompresi lebih besar dari aslinya! Saya tidak tahu mengapa saya tidak beruntung, lrzip khususnya harus efektif menurut ulasan acak yang saya baca dan dokumen resmi (file lebih besar dari 100mb, semakin besar semakin baik) - lihat https: //wiki.archlinux. org / index.php / Lrzip

Mengapa saya tidak bisa mengompres file saya?

Lee
sumber
2
Secara pribadi saya tidak akan repot mengarsipkan video mp4 karena video tersebut sudah dikompres oleh codec.
pram
Dan Anda dapat mencapai ukuran yang lebih kecil dengan menggunakan alat konverter / kompresor video seperti FFMpeg .
Jet
kereta dorong bayi dan Jet sudah benar. Ini adalah perilaku yang diharapkan. Adalah kontra-produktif untuk mencoba mengompres sesuatu yang sudah terkompresi dengan baik. Jika Anda menggunakan alat konversi video, Anda mungkin dapat menghemat ruang dengan mengorbankan kualitas video (jelas atau tidak). Namun, mulailah dengan salinan terkompresi kualitas tertinggi yang Anda miliki.
John S Gruber

Jawaban:

25

Seperti @pram katakan di atas dalam komentar, video mp4 sudah dikompresi, dan format video lainnya mungkin juga menggunakan kompresi sampai batas tertentu. Oleh karena itu, mencoba mengompresi mereka tidak akan menghasilkan sedikit (jika ada) pengurangan ukuran (ini juga berlaku, setidaknya sebagian, pada gambar dan musik). Dalam hal ini, sepertinya metadata (untuk file terkompresi itu sendiri) mungkin menyebabkan peningkatan. Satu-satunya format kompresi yang mungkin (dan itu adalah kekuatan yang kuat) menghasilkan beberapa pengurangan adalah xz.

Pada catatan lain, jika Anda ingin mengurangi ukuran video-video itu, lihatlah pengkodean ulang video menggunakan sesuatu seperti Handbrake.

saiarcot895
sumber
3
Saya menemukan bahwa webm memiliki tingkat kompresi yang baik secara umum. Jauh lebih kecil dari mp4.
Seth
@Seth sebenarnya MP4 (yang merupakan AVC alias h.264 atau yang lebih baru dan lebih baik h.265 alias codec HEVC) memberikan file yang lebih kecil dengan kualitas yang sama (atau kualitas yang lebih baik pada ukuran file yang sama).
David Balažic
@ DavidBalažic kami membandingkan apel dan apel di sini, ketika kami mencoba berbicara tentang jeruk. mp4 dan webm keduanya wadah, mereka tidak ada hubungannya dengan kompresi. Anda benar bahwa h.264 dan h.265 keduanya adalah codec yang umum digunakan dalam wadah mp4, tetapi Anda tidak dapat membandingkan h.265 dengan webm . h.264 sebanding dengan codec vp8 yang biasa digunakan dalam wadah webm, seperti halnya h.265 sebanding dengan codec vp9, juga biasanya terkandung oleh webm. tl; dr: gunakan h.265 dalam mp4 dan vp9 di webm dan Anda akan mendapatkan kualitas / efisiensi yang kira-kira sama.
forresthopkinsa
13

Sungguh, fakta bahwa file sudah dikompres bukan masalah krusial. Ini adalah ini: kompresi secara umum hanya dapat bekerja jika data memiliki semacam redundansi di dalamnya . Itu praktis selalu terjadi untuk file yang tidak terkompresi - namun, itu tidak selalu jelas apa redundansi itu. Algoritma kompresi tujuan umum sebagian besar menargetkan hal-hal yang jelas dalam file teks: banyak kata muncul tidak hanya sekali tetapi banyak kali dalam bentuk yang identik, mungkin frasa kata dapat dikombinasikan, dll. generalisasi ini untuk apa pun dari daftar nomor telepon yang disandikan ASCII lebih dari puisi Cina ke kode mesin biner, tetapi mereka tidak mungkin bekerja untuk semua jenis data. Secara khusus, file media secara konseptualdata analog , dalam representasi digital yang bising. Itu berarti, sebenarnya tidak ada jenis pengalihan-textfile sama sekali: beberapa motif mungkin berulang, tetapi selalu dengan konfigurasi yang sedikit berbeda dari noise sensor. Itu sebabnya semua format gambar / AV terkompresi menggunakan beberapa transformasi yang dipilih secara cerdik sebagai langkah penyandian pertama mereka, biasanya berdasarkan DCT atau wavelet . Transformasi ini secara kasar memindahkan bagian gambar dan bagian suara ke lokasi yang berbeda, sehingga mereka dapat dipisahkan dan dengan kompresi lossy Anda hanya menyimpan informasi yang Anda anggap paling "penting", yang tidak termasuk suara, sedangkan " informasi yang baik "memiliki banyak redundansi. (Itu bukan cara kerjanya, tapi semacamnya.)

Jika kompresor serba guna menggunakan transformasi ini, efeknya akan menjadi kebalikannya: sebagian besar informasi digital sebenarnya akan salah diklasifikasi sebagai beberapa jenis noise, karena tidak memiliki struktur "halus" yang Anda temukan dalam sinyal analog. Dan setelah kompresi video yang hilang jelas tidak ada kelancaran analog atau perulangan digital dapat ditemukan lagi (jika ya, codec akan menggunakan tahap bzip lain atau sesuatu sendiri!)

leftaroundabout
sumber
12

Alasan Anda tidak beruntung adalah karena mp4 sudah dikompresi, Anda tidak dapat mengompresnya lebih lanjut. Yang Anda lakukan hanyalah menambahkan informasi header format kompresi ke file.

Karena file sudah dikompresi dan Anda tidak dapat memampatkannya lebih lanjut, ini menghasilkan peningkatan ukuran file karena semua yang Anda lakukan adalah menjaga informasi yang sama dan menambahkan beberapa byte informasi header.

terdon
sumber
5

Ini adalah contoh yang bagus dari prinsip pigeonhole .

Karena file sudah dikompresi (lossy), ada sedikit atau tidak ada pengurangan yang bisa didapat di mana saja, yang berarti bahwa Anda sudah mendapatkan laba bersih nol. Seperti yang disebutkan lainnya, format terkompresi itu sendiri memiliki kerugian tertentu, biasanya diabaikan dalam meta-datanya sendiri. Semua ini datang bersama-sama berarti bahwa mungkin tidak ada pigeonhole tersisa di set file yang sama atau lebih kecil dan dengan demikian data terkompresi Anda jatuh ke dalam set file yang lebih besar.

Livius
sumber
4
Maaf, tapi ini salah penerapan prinsip tersebut. Anda bisa menerapkan logika yang sama ke file 1.7GB yang penuh dengan angka nol, dan mendapatkan jawaban yang salah. Prinsip pigeonhole digunakan secara umum untuk membuktikan keberadaan file yang tidak dapat dikompresi, bukan untuk membuktikan bahwa file tertentu sebenarnya tidak dapat dikompresi. (Yang terakhir tidak dapat dihitung, karena fungsi kompleksitas Kolmogorov bukan fungsi yang dapat dihitung).
nneonneo
1
@nneonneo Maka silakan perbaiki artikel Wikipedia yang ditautkan. Adanya file yang tidak dapat dimampatkan mengikuti secara langsung darinya dan kemudian Anda menambahkan dalam meta-data kompresi dan tiba-tiba Anda memiliki file yang lebih besar dari aslinya. Itulah tepatnya yang saya katakan. Bukti bahwa file tidak kompresibel lebih lanjut di bawah implementasi algoritma tertentu adalah bahwa outputnya tidak lebih kecil. Tentu saja, juga mungkin bahwa meta-data hanya lebih besar daripada kemenangan kompresi, tetapi saya tidak yakin saya telah menggambarkannya sebagai terkompresi dalam arti berorientasi pengguna.
Livius
@Livius Artikel wikipedia benar: ia menggunakan prinsip pigeonhole untuk membuktikan keberadaan file yang tidak dapat dikompres untuk algoritma kompresi lossless yang diberikan. Tetapi Anda tidak dapat memperoleh ketidakterkompresanan file tertentu hanya dari prinsip pigeonhole.
David Richerby
@ DavidRicherby Ya, tetapi fakta bahwa file tidak dikompresi oleh implementasi tertentu dari algoritma yang diberikan adalah bukti bahwa itu tidak kompresibel. Kecuali jika ada alasan lain untuk adanya file yang tidak dapat dimampatkan, maka itu berarti bahwa kegagalan untuk kompres disebabkan oleh PP. Satu-satunya alasan lain yang mungkin adalah karena algoritma yang diberikan tidak melihat cara untuk mengurangi ukurannya, yang lagi-lagi tampaknya merupakan kasus "di bawah asumsi algoritma, tidak ada file yang lebih kecil dengan informasi yang sama; kasus seperti itu tentu ada karena PP ".
Livius
Lebih tepatnya, PP memaksa algoritma untuk memiliki input yang gambarnya tidak terletak pada ruang file yang lebih kecil. Setiap keputusan yang mengarah ke gambar file yang diberikan tidak pas di ruang itu dengan demikian pada tingkat tertentu didorong oleh PP dan kompromi yang dipaksakan, (dengan asumsi definisi algoritma kompresi yang waras). Kemudian setiap file yang gambarnya tidak lebih kecil milik set bahwa PP dikecualikan dari menjadi kompresibel. Bukti bahwa file yang diberikan tidak dapat dikompres adalah kegagalannya untuk mengkompres; dalam arti luas, ketidakkompresan selalu merupakan hasil dari PP dan komprominya.
Livius
4

Jika Anda ingin mengompres file ini, Anda harus mengurangi kualitasnya.

Tanpa mengetahui berapa lama dan format dan tipe konten apa file-file ini sulit untuk mengetahui apakah file-file ini memiliki ruang untuk menyusut tanpa kehilangan kualitas yang banyak terlihat.

BluRays dengan video 1080p cenderung di atas 25GB sehingga bukan tidak mungkin Anda sudah pada rasio kualitas-ke-ukuran yang optimal untuk H.264.

Anda dapat mencoba menggunakan ffmpegatau avconvmengonversi file.

Anda bisa mulai dengan ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4

The anconvperintah akan bekerja sama.

  • Tingkatkan -crfnilai untuk mengurangi ukuran dan kualitas file, saya tidak merekomendasikan yang lebih tinggi dari 25.

  • Anda dapat mengubah preset ke slowatau mediumuntuk meningkatkan kecepatan, tetapi ukuran file Anda akan menderita dibandingkan dengan sloweratau bahkan veryslow(jika Anda sangat sabar!).

  • Pengaturan lebih lanjut dapat ditemukan di sini: http://mewiki.project357.com/wiki/X264_Settings

  • Saya merekomendasikan untuk menjauh dari sebagian besar karena preset memberikan default waras, dengan -tunepengecualian.

  • Coba denoiser jika konten Anda adalah film ( -vf hqdn3d) Anda dapat meningkatkan kualitas visual dibandingkan dengan menggunakan -crfnilai tinggi .

  • Perkecil konten Anda -vf scale=-1:720untuk 720p dan -vf scale=-1:480480p untuk meningkatkan kecepatan penyandian dan menjaga kualitas.

Daniel Hill
sumber