홈페이지 » 어떻게 » 파일 압축은 어떻게 작동합니까?

    파일 압축은 어떻게 작동합니까?

    소프트웨어 엔지니어는 항상 많은 양의 데이터를 작은 공간에 맞추는 새로운 방법을 개발해 왔습니다. 우리의 하드 드라이브가 작았을 때 사실이었고 인터넷의 출현으로 인해 더욱 중요 해졌습니다. 파일 압축은 우리를 연결하는 데 중요한 역할을합니다. 따라서 더 적은 데이터를 전송하여 다운로드 속도를 높이고 사용량이 많은 네트워크에 더 많은 연결을 적용 할 수 있습니다.

    어떻게 작동합니까??

    이 질문에 대답하는 것은이 기사에서 다루는 것보다 더 복잡한 수학을 설명하는 것과 관련 될 것입니다.하지만 수학적으로 어떻게 작동 하는지를 정확하게 이해할 필요는 없습니다.

    텍스트를 압축 할 때 가장 많이 사용되는 라이브러리는 동시에 두 가지를 사용하여 매우 높은 압축 비율을 달성하는 두 가지 압축 알고리즘에 의존합니다. 이 두 알고리즘은 "LZ77"과 "허프만 코딩"입니다. 허프만 코딩은 매우 복잡하므로 여기서는 자세히 설명하지 않겠습니다. 주로, 짧은 수학 과제를 할당하기 위해 멋진 수학을 사용합니다. 이진 코드 이 과정에서 파일 크기가 줄어들어 개별 문자로 변환됩니다. 그것에 대해 더 자세히 알고 싶다면 코드가 어떻게 작동하는지에 대한이 기사 나 컴퓨터 애호가가 작성한이 설명자를 확인하십시오..

    반면에 LZ77은 비교적 간단하며 여기에서 우리가 이야기 할 내용입니다. 그것은 중복 단어를 제거하고 단어를 나타내는 더 작은 "키"로 대체합니다.

    이 짧은 텍스트를 예로 들어 보겠습니다.

    LZ77 알고리즘은이 텍스트를보고 "howtogeek"을 세 번 반복하고이를 다음과 같이 변경합니다.

    그런 다음 텍스트를 다시 읽고 싶을 때 (h)의 모든 인스턴스를 "howtogeek"로 대체하여 원래 구문으로 되돌립니다..

    우리는 압축을 "무손실"이라고 부릅니다. 사용자가 입력하는 데이터는 가져 오는 데이터와 동일합니다. 아무것도 잃어 버리지 않는다..

    실제로 LZ77은 키 목록을 사용하지 않고 두 번째 및 세 번째 발생을 메모리의 링크로 대체합니다.

    이제 (h)에 도달하면 "howtogeek"로 돌아가서 대신 읽습니다..

    좀 더 자세한 설명에 관심이 있으시면 컴퓨터 필의이 비디오는 매우 도움이됩니다..

    자, 이것은 이상적인 예입니다. 실제로 대부분의 텍스트는 단지 몇 자 정도의 작은 키로 압축됩니다. 예를 들어 "the"라는 단어는 "there", "their"및 "then"과 같은 단어로 나타나는 경우에도 압축됩니다. 반복되는 텍스트를 사용하면 일부 압축 비율을 얻을 수 있습니다. 이 텍스트 파일을 "howtogeek"라는 단어를 100 번 반복하십시오. 원본 텍스트 파일의 크기는 3 킬로바이트입니다. 그러나 압축하면 158 바이트 만 차지합니다. 그건 거의 95 % 압축이야..

    이제 분명히, 그것은 똑같은 단어가 반복해서 반복되기 때문에 꽤 극단적 인 예입니다. 일반적으로 파일의 대부분이 텍스트 인 경우 ZIP과 같은 압축 형식을 사용하여 약 30-40 %의 압축률을 얻게됩니다.

    이 LZ77 알고리즘은 텍스트뿐만 아니라 모든 바이너리 데이터에 적용됩니다. 그러나 대부분의 언어가 사용하는 반복 단어의 수가 많기 때문에 텍스트를 압축하는 것이 일반적입니다. 중국어와 같은 언어는 영어보다 압축하기가 조금 더 어려울 수 있습니다 (예 :.

    이미지 및 비디오 압축 작동 방법?

    비디오 및 오디오 압축은 매우 다르게 작동합니다. 무손실 압축이 가능하고 손실 된 데이터가없는 텍스트의 경우와 달리 이미지의 경우 일부 데이터가 손실되는 "손실 압축"이 있습니다. 그리고 압축하면할수록 더 많은 데이터가 손실됩니다..

    이것이 사람들이 여러 번 업로드, 공유 및 스크린 샷 한 끔찍한 모양의 JPEG로 연결되는 원인입니다. 이미지가 압축되면 매번 데이터가 손실됩니다..

    여기에 예제가 있습니다. 이것은 내가 압축 한 스크린 샷입니다..

    그런 다음 해당 스크린 샷을 찍은 다음 Photoshop을 여러 번 실행하여 품질이 낮은 JPEG로 내보낼 때마다 여러 번 실행했습니다. 결과는 다음과 같습니다..

    꽤 나쁜 것, 바로 보인다.?

    음, 이것은 최악의 시나리오 일 뿐이며 매번 0 % JPEG 품질로 내보내고 있습니다. 비교를 위해, 여기에 50 % 품질의 JPEG가 있습니다.이 JPEG는 원본 PNG 이미지와 거의 구별 할 수 없습니다..

    이 이미지의 PNG 크기는 200KB 였지만이 50 % 품질의 JPEG는 단지 28KB입니다..

    그렇다면 어떻게 공간을 많이 절약 할 수 있을까요? 음, JPEG 알고리즘은 공학의 위업입니다. 대부분의 이미지는 숫자 목록을 저장하며 각 숫자는 단일 픽셀을 나타냅니다..

    JPEG는이 작업을 수행하지 않습니다. 대신, 다양한 강도로 함께 추가되는 사인파 모음 인 이산 코사인 변환 (Discrete Cosine Transform)을 사용하여 이미지를 저장합니다. 64 개의 방정식을 사용하지만, 대부분이 사용되지 않습니다. 이것은 Photoshop 및 다른 이미지 응용 프로그램에서 JPEG의 품질 슬라이더가 사용하는 방정식의 수를 선택하는 것입니다. 그런 다음 앱은 허프만 인코딩을 사용하여 파일 크기를 더욱 줄입니다..

    이로 인해 JPEG는 매우 높은 압축률을 제공하기 때문에 품질에 따라 몇 메가 바이트가되는 파일을 2 킬로바이트까지 줄일 수 있습니다. 물론, 너무 많이 사용하면 다음과 같이 끝납니다.

    그 이미지는 끔찍합니다. 그러나 JPEG 압축을 소량으로 사용하면 파일 크기에 큰 영향을 줄 수 있으므로 JPEG를 웹 사이트의 이미지 압축에 매우 유용합니다. 온라인으로 볼 수있는 대부분의 사진은 다운로드 시간을 절약하기 위해 압축되어 있습니다. 특히 데이터 연결이 나쁜 모바일 사용자의 경우에는 더욱 그렇습니다. 사실, How-To Geek의 모든 이미지는 페이지 로딩을 빠르게하기 위해 압축되어 있습니다..

    비디오 압축

    비디오는 이미지와 조금 다르게 작동합니다. JPEG을 사용하여 비디오의 각 프레임을 압축 할 것이라고 생각할 수 있습니다. 물론 확실히 할 수 있지만 비디오의 경우 더 나은 방법이 있습니다.

    우리는 "프레임 간 압축 (interframe compression)"이라는 용어를 사용합니다.이 프레임 간 압축은 각 프레임 간의 변경 사항을 계산하고이를 저장합니다. 따라서 예를 들어 비디오에서 몇 초 정도의 비교적 짧은 시간 동안 촬영하면 압축 알고리즘이 변경되지 않는 장면의 모든 내용을 저장할 필요가 없으므로 많은 공간이 절약됩니다. 인터 프레임 압축은 우리가 디지털 TV와 웹 비디오를 가지고있는 가장 큰 이유입니다. 이를 사용하지 않으면 동영상이 수백 기가 바이트가됩니다. YouTube가 출시 된 2005 년의 평균 하드 드라이브 크기보다.

    또한, 프레임 간 압축은 대부분 고정 비디오와 가장 잘 작동하기 때문에 색종이로 인해 비디오 화질이 저하됩니다.

    참고 : GIF는이 작업을 수행하지 않으므로 애니메이션 GIF가 매우 짧고 작지만 파일 크기가 상당히 클 수 있습니다..

    비디오에 대해 염두에 두어야 할 또 다른 사항은 해당 비트 전송률 (모든 초마다 허용되는 데이터의 양)입니다. 예를 들어, 비트율이 200kb / s이면 비디오가 상당히 나빠질 것입니다. 비트 전송률이 올라감에 따라 품질이 올라갑니다. 그러나 초당 2 메가 바이트가 지나면 수익이 줄어 듭니다..

    이것은 해파리 비디오에서 찍은 확대 된 프레임입니다. 왼쪽에있는 것은 3Mb / s이고, 오른쪽에있는 것은 100Mb / s입니다..

    파일 크기는 30 배 증가하지만 품질은 크게 향상되지 않습니다. 일반적으로 YouTube 동영상은 연결에 따라 2-10Mb / s 정도의 속도로 앉아 있습니다..

    이 데모는 실제 비디오로 더 잘 작동하므로 직접 확인하려면 여기에서 사용한 것과 동일한 비트 전송률 테스트 비디오를 다운로드하십시오.

    오디오 압축

    오디오 압축은 텍스트 및 이미지 압축과 매우 유사하게 작동합니다. JPEG에서 볼 수없는 이미지에서 디테일을 제거하는 경우 오디오 압축은 사운드에 대해 동일한 작업을 수행합니다. 실제 기타가 훨씬 더 크게 들리면 문자열에서 기타 픽업의 삐걱 거리는 소리가 들리지 않아도됩니다..

    MP3는 또한 48와 96 kbps (로우 엔드)의 낮은 엔드에서부터 128과 240kbps (꽤 좋은)에서 320kbps (하이 엔드 오디오)까지 비트 전송률을 사용하며, 예외적으로 우수한 헤드폰으로 만 차이를들을 수 있습니다 및 귀).

    LOS77 인코딩을 사용하여 무손실 오디오를 전달하는 오디오 용 무손실 압축 코덱 (FLAC 인 주요 압축 코덱)도 있습니다. 어떤 사람들은 FLAC의 완벽한 음질로 맹세하지만 MP3의 보급으로 인해 대부분의 사람들은 그 차이점을 말하거나 혹은 말하지 않을 것 같습니다.