![압축된 파일을 더 압축할 수 있나요?](https://linux55.com/image/44030/%EC%95%95%EC%B6%95%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%8D%94%20%EC%95%95%EC%B6%95%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
SSH를 통해 서버에 액세스하고 SFTP 또는 HTTP를 통해 서버에서 파일을 다운로드할 수 있습니다. 4.4GB .mkv 파일을 다운로드하고 싶지만 대역폭이 제한되어 있습니다.
zip
, , gzip
를 사용했는데 p7zip
압축파일이 항상 4.4GB 입니다. 일부 CLI 매개변수를 조작한 후 파일을 4.3GB로 줄이려고 했습니다. 제가 아는 바로는 제가 가지고 있는 비디오 파일은 h.264 압축 파일입니다. 왜 더 이상 압축할 수 없는지 이해가 되지 않습니다(다른 스택 교환 포럼 질문일 수도 있습니다).
압축 도구가 파일 내용에 구애받지 않도록 바이트 수준에서 압축할 수 있는 방법이 있습니까? (다른 도구도 그런 줄 알았는데 작동하지 않습니다.)
4.4GB 미만의 메모리를 사용하여 이를 채울 수 있는 다른 방법이 있습니까? 대상 파일 크기를 고려하지 않았지만 예를 들어 4.3GB는 의미가 없습니다(~2-3%만 감소).
답변1
h264 스트림이 이미 고도로 압축되었을 수 있습니다. 더 압축하려고 하면 실제로 파일 크기가 약간 증가할 수 있습니다(헤더 추가 등). 다른 곳에 영향을 주지 않고 파일을 원하는 크기로 계속 압축할 수는 없으며 gzip
다른 압축기도 마법이 아닙니다.
이를 달성할 수 있는 유일한 방법은 h264 스트림을 더 낮은 비트 전송률로 다시 인코딩하는 것입니다.
답변2
압축은 다양한 방식으로 최적화되고 표시될 수 있는 데이터 패턴이 있다는 사실을 활용합니다. 이로 인해 패턴 수가 크게 감소합니다(패턴이 보존된 경우 최종 파일에 유지하지 않고 원래 압축이 패턴을 최적화했을 수 있으므로). 이는 또 다른 압축 라운드에서 더 이상 크기 축소를 수행할 수 없음을 의미합니다.