Nén video tạo tập tin lớn hơn


17

Tôi đã sử dụng GUI (nhấp chuột phải => nén) để thử và nén một .tar chứa 3 video có tổng dung lượng 1.7gb (.H264 MP4). gzip, lrzip, 7z, v.v ... tất cả đều không làm gì với kích thước tệp và thư mục nén cũng là 1,7 gb.

Sau đó tôi đã thử chạy lrzip từ dòng lệnh (trong trường hợp đó là sự cố gui) và sử dụng cờ -z (nén cực độ) và đây là đầu ra của tôi.

nhập mô tả hình ảnh ở đây

Như tỷ lệ nén hiển thị, kích thước thực tế của thư mục nén lớn hơn bản gốc! Tôi không biết tại sao tôi không gặp may mắn, đặc biệt lrzip sẽ có hiệu quả theo các đánh giá ngẫu nhiên tôi đã đọc và các tài liệu chính thức (các tệp lớn hơn 100mb, càng lớn càng tốt) - xem https: //wiki.archlinux. org / index.php / Lrzip

Tại sao tôi không thể nén các tập tin của mình?


2
Cá nhân tôi sẽ không bận tâm đến việc lưu trữ video mp4 vì các video đó đã được nén bởi codec.
pram

Và bạn có thể đạt được kích thước nhỏ hơn bằng cách sử dụng các công cụ chuyển đổi / nén video như FFMpeg .
Máy bay phản lực

pram và Jet là chính xác. Đây là hành vi dự kiến. Nó là phản tác dụng để cố gắng nén một cái gì đó đã được nén tốt. Nếu bạn sử dụng các công cụ chuyển đổi video, bạn có thể tiết kiệm dung lượng với chi phí chất lượng của video (rõ ràng hoặc không). Tuy nhiên, bắt đầu với bản sao nén chất lượng cao nhất mà bạn có.
John S Gruber

Câu trả lời:


25

Như @pram đã nói ở trên trong nhận xét, video mp4 đã được nén và các định dạng video khác có thể cũng sử dụng nén ở một mức độ nào đó. Do đó, cố gắng nén chúng sẽ không làm giảm kích thước (nếu có) (điều này cũng áp dụng, ít nhất là một phần, cho hình ảnh và âm nhạc). Trong trường hợp này, có vẻ như siêu dữ liệu (đối với chính tệp nén) có thể gây ra sự gia tăng. Định dạng nén duy nhất có thể (và đó có thể là mạnh) dẫn đến một số giảm là xz.

Một lưu ý khác, nếu bạn muốn giảm kích thước của những video đó, thay vào đó, hãy tìm cách mã hóa lại các video bằng cách sử dụng một cái gì đó như Handbrake.


3
Tôi thấy rằng webm có tốc độ nén tốt nói chung. Nhỏ hơn nhiều so với mp4.
Seth

@Seth thực sự là MP4 (có thể là AVC aka h.264 hoặc mới hơn và tốt hơn là codec HEVC) cho các tệp nhỏ hơn có cùng chất lượng (hoặc chất lượng tốt hơn ở cùng kích thước tệp).
David Balažic

@ DavidBalažic chúng tôi đang so sánh táo và táo ở đây, khi chúng tôi đang cố gắng nói về cam. mp4 và webm đều là container, chúng không liên quan gì đến nén. Bạn đúng rằng h.264 và h.265 đều là các codec thường được sử dụng trong các thùng chứa mp4, nhưng bạn không thể so sánh h.265 với webm . h.264 có thể so sánh với codec vp8 thường được sử dụng trong các thùng chứa webm, giống như h.265 có thể so sánh với codec vp9, cũng thường được chứa bởi webm. tl; dr: sử dụng h.265 trong mp4 và vp9 trong webm và bạn sẽ nhận được chất lượng / hiệu quả gần như nhau.
forresthopkinsa

13

Thực sự, thực tế là các tập tin đã được nén không phải là vấn đề quan trọng. Đây là: nén nói chung chỉ có thể hoạt động nếu dữ liệu có một số loại dư thừa trong đó . Đó là thực tế luôn luôn như vậy cho các tập tin nén - tuy nhiên, nó không nhất thiết phải rõ ràng những gì dư thừa là. Các thuật toán nén cho mục đích chung chủ yếu nhắm vào loại điều rõ ràng trong các tệp văn bản: nhiều từ xuất hiện không chỉ một lần mà nhiều lần ở dạng giống hệt nhau, có lẽ các cụm từ có thể được kết hợp, v.v. Các thuật toán khá tốt trong khái quát hóa điều này với bất cứ điều gì từ danh sách số điện thoại được mã hóa ASCII qua thơ Trung Quốc sang mã máy nhị phân, nhưng chúng không thể hoạt động với bất kỳ loại dữ liệu nào. Cụ thể, các tập tin phương tiện là khái niệmdữ liệu tương tự , trong một đại diện kỹ thuật số ồn ào. Điều đó có nghĩa là, thực sự không có bất kỳ loại khử văn bản nào cả: một số động cơ có thể được lặp lại, nhưng luôn có cấu hình nhiễu cảm biến hơi khác. Đó là lý do tại sao tất cả các định dạng AV / hình ảnh nén sử dụng một số phép biến đổi được chọn khéo léo làm bước mã hóa đầu tiên của chúng, thường dựa trên DCT hoặc wavelet . Các phép biến đổi này nói một cách đại khái là di chuyển các phần hình ảnh và các phần nhiễu vào các vị trí khác nhau, do đó chúng có thể được tách biệt và với tính năng nén mất mát, bạn chỉ giữ lại thông tin mà bạn cho là quan trọng nhất, không bao gồm nhiễu, trong khi " thông tin tốt "có rất nhiều dư thừa. (Đó không thực sự là cách nó hoạt động, nhưng loại.)

Nếu máy nén đa năng sử dụng các phép biến đổi này, thì hiệu ứng sẽ ngược lại: hầu hết thông tin kỹ thuật số thực sự sẽ bị phân loại sai thành một loại nhiễu, vì nó thiếu cấu trúc "mịn" mà bạn tìm thấy trong các tín hiệu tương tự. Và sau khi nén video bị mất rõ ràng, không thể tìm thấy độ mượt tương tự hoặc tái phát kỹ thuật số nữa (nếu có, các codec sẽ sử dụng một giai đoạn bzip khác hoặc chính chúng!)


12

Lý do bạn không gặp may là mp4 đã bị nén, bạn không thể nén thêm. Tất cả những gì bạn đang làm là thêm thông tin tiêu đề của định dạng nén vào tệp.

Vì các tệp đã được nén và bạn không thể nén chúng thêm nữa, điều này dẫn đến việc tăng kích thước tệp vì tất cả những gì bạn đang làm là giữ cùng một thông tin và thêm một vài byte thông tin tiêu đề.


5

Đây là một ví dụ hay về nguyên tắc pigeonhole .

Vì tệp đã được nén (mất), nên có rất ít hoặc không có bất kỳ mức giảm nào, điều đó có nghĩa là bạn đã đạt được mức lãi ròng bằng không. Như những người khác đã đề cập, bản thân định dạng nén có một sự mất mát nhất định, thường không đáng kể trong dữ liệu meta của chính nó. Tất cả những điều này kết hợp với nhau có nghĩa là có lẽ không còn pigeonhole trong tập hợp các tệp bằng hoặc nhỏ hơn và do đó dữ liệu nén của bạn rơi vào tập hợp các tệp lớn hơn.


4
Tôi xin lỗi, nhưng đây là một ứng dụng sai của nguyên tắc đã nói. Bạn có thể áp dụng logic tương tự cho tệp 1.7GB chứa đầy số 0 và nhận được câu trả lời không chính xác. Nguyên tắc pigeonhole thường được sử dụng để chứng minh sự tồn tại của các tệp không nén được, không phải để chứng minh rằng bất kỳ tệp cụ thể nào thực sự không thể nén được. (Cái sau không thể tính toán được, vì hàm phức tạp Kolmogorov không phải là hàm tính toán).
nneonneo

1
@nneonneo Sau đó, vui lòng sửa bài viết Wikipedia được liên kết. Sự tồn tại của các tệp không thể nén được theo dõi trực tiếp từ nó và sau đó bạn thêm vào siêu dữ liệu nén và đột nhiên bạn có một tệp lớn hơn bản gốc. Đó là chính xác những gì tôi nói. Bằng chứng là tập tin không thể nén thêm được theo một triển khai nhất định của một thuật toán nhất định là đầu ra không nhỏ hơn. Tất nhiên, cũng có thể dữ liệu meta đơn giản là lớn hơn chiến thắng nén, nhưng tôi không chắc chắn tôi đã mô tả rằng nó được nén theo nghĩa hướng người dùng.
Livius

@Livius Bài viết trên wikipedia là chính xác: nó sử dụng nguyên tắc pigeonhole để chứng minh sự tồn tại của các tệp không thể nén cho bất kỳ thuật toán nén không mất dữ liệu nào. Nhưng bạn không thể lấy được khả năng không nén của bất kỳ tệp cụ thể nào chỉ từ nguyên tắc pigeonhole.
David Richerby

@DavidR Richby Có, nhưng thực tế là tệp không bị nén bởi một triển khai nhất định của một thuật toán nhất định là bằng chứng cho thấy nó không thể nén được. Trừ khi có những lý do khác cho sự tồn tại của các tệp không thể nén được, thì điều đó xảy ra là việc không nén được là do PP. Lý do duy nhất khác có thể là vì thuật toán đã cho không có cách nào giảm kích thước của nó, mà dường như lại là trường hợp "theo các giả định của thuật toán, không có tệp nào nhỏ hơn có cùng thông tin; vì PP ".
Livius

Chính xác hơn, PP buộc thuật toán phải có đầu vào có hình ảnh không nằm trong không gian của các tệp nhỏ hơn. Do đó, mọi quyết định dẫn đến hình ảnh của một tệp nhất định không phù hợp trong không gian đó, do đó, ở một mức độ nào đó được điều khiển bởi PP và sự thỏa hiệp mà nó buộc, (giả sử một định nghĩa lành mạnh về thuật toán nén). Sau đó, bất kỳ tệp nào có hình ảnh không nhỏ hơn thuộc về tập hợp mà PP loại trừ không thể nén được. Bằng chứng cho thấy một tập tin nhất định không thể nén được là do nó không nén được; theo nghĩa rộng, tính không thể nén được luôn là kết quả của PP và sự thỏa hiệp của nó.
Livius

4

Nếu bạn muốn nén các tệp này, bạn sẽ phải giảm chất lượng.

Không biết bao lâu và định dạng và nội dung loại các tệp này thật khó để biết liệu các tệp này có chỗ nào bị thu hẹp mà không bị giảm chất lượng rõ rệt hay không.

BluRays với video 1080p có xu hướng lên tới 25GB, do đó, không có khả năng bạn đã ở tỷ lệ chất lượng-kích thước tối ưu cho H.264.

Bạn có thể thử sử dụng ffmpeghoặc avconvđể chuyển đổi tập tin.

Bạn có thể bắt đầu với ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4

Các anconvlệnh sẽ làm việc tương tự.

  • Tăng -crfgiá trị để giảm kích thước và chất lượng tệp, tôi không khuyến nghị cao hơn 25.

  • Bạn có thể thay đổi giá trị đặt trước thành slowhoặc mediumđể tăng tốc độ, nhưng kích thước tệp của bạn sẽ bị ảnh hưởng so với slowerhoặc thậm chí veryslow(nếu bạn rất kiên nhẫn!).

  • Có thể tìm thấy nhiều cài đặt hơn tại đây: http://mewiki.project357.com/wiki/X264_Sinstall

  • Tôi khuyên bạn nên tránh xa hầu hết các cài đặt trước cung cấp mặc định lành mạnh, với -tunengoại lệ.

  • Hãy thử một bộ khử nhiễu nếu nội dung của bạn là phim ( -vf hqdn3d) bạn có thể cải thiện chất lượng hình ảnh so với việc sử dụng -crfgiá trị cao .

  • Thu nhỏ nội dung của bạn -vf scale=-1:720trong 720p và -vf scale=-1:480480p để cải thiện tốc độ mã hóa và duy trì chất lượng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.