압축에 대해서

jinyeoulman의 이미지

압축을 하는 시간과, 압축을 푸는 시간은 어떤쪽이 긴가요?

제 컴에서 50M의 파일을 tar로 압축을 해서 풀어보았는데,

압축하는 시간이 훨씬더 길었습니다.

이론적으로 혹시 여기에 대해서 아시는 분이 계시면 부탁드립니다.

차리서의 이미지

제가 뭘 잘못 알고있었나 싶어서 그러는데, tar가 '압축'인가요?

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

jinyeoulman의 이미지

죄송합니다.

-z(gzip)옵션으로 실행 했다는 내용이 빠졌네요...

Prentice의 이미지

참고로 오디오/비디오 압축의 경우, 압축은 오래 걸리고 압축해제는 순식간에 되는 것이 보통입니다. 이 경우 압축은 디스크에 하고 압축해제는 메모리에 하기 때문에 빠른 이유도 있겠지만, 오디오/비디오 압축은 한번 하면 끝이지만 압축해제, 즉 재생은 두고두고 할 것이기 때문에 빨라야 한다는 이유도 있을 것입니다.

jinyeoulman의 이미지

오디오/비디오의 압축해제란 무슨 의미인가요?

오디오/비디오의 압축화일을 원상태로 돌린다는 건가요?

이런화일은 압축시 데이타 손실이 있기때문에 원상태로 돌릴수 없지 않나요?

제가 잘 몰라서 그러니 틀린점이 있더라도 널리 이해해주십시요.

Prentice의 이미지

A/V의 압축이라고 무조건 손실압축인 것은 아닙니다. Free Lossless Audio Codec, 즉 FLAC이라는 무손실오디오코덱도 있고, 무손실비디오압축도 (효용이 떨어지긴 하지만) 존재하는 것으로 알고 있습니다.

원상태로 돌릴 수 있도록 압축했으면 원상태로 돌릴 수 있습니다.

PNG이라는 무손실 이미지 압축 포맷도 있죠. 음. MNG라는 연속 이미지 압축 포맷에도 무손실모드가 있고요.

jinyeoulman의 이미지

그렇군요...
답변 감사 합니다.

차리서의 이미지

jinyeoulman wrote:
오디오/비디오의 압축해제란 무슨 의미인가요?

오디오/비디오의 압축화일을 원상태로 돌린다는 건가요?

이런화일은 압축시 데이타 손실이 있기때문에 원상태로 돌릴수 없지 않나요?

제가 잘 몰라서 그러니 틀린점이 있더라도 널리 이해해주십시요.


비디오 압축이란 비디오 파일을 압축한다는 뜻보다는 아마도 비디오 파일 자체에 들어있는 압축 기법을 말하는 것일겁니다.

예를들어 320x200px 크기에 픽셀당 16bit 색상의 영상이 초당 24프레임 들어있다고 가정하고 이 정보를 전혀 압축하지 않고 그냥 raw하게 저장한다고 하면 어마어마한 크기가 되겠죠. 잘 알려진 가장 간단한 동영상 압축 기법 중 하나는 첫번째 프레임만을 모두 저장하고 그 이후부터는 연이은 두 프레임간의 차영상만 추출해서 저장하는 것이라고 알고 있습니다. (연이은 두 프레임은 약간의 차이밖에 없기 때문에 이 '차이'만 저장하면 용량이 압도적으로 줄어들겠죠.)

따라서, 비디오 압축 해제란 이렇게 저장된 비디오 파일의 차영상 정보들로부터 다시 원래의 영상 프레임들을 (화면에 뿌릴 수 있도록) 복구하는 과정으로 이해하고 있습니다. 물론, 제가 잘못 알고 있을지도 모르니 다른 분들의 답변을 기다려봅니다.

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

Prentice의 이미지

제 관심 분야는 오디오 압축이라서 이미지 압축이나 비디오 (동영상) 압축에 대해 잘 알지는 못합니다.

다만 제가 아는 바를 말씀드리자면, 비디오 압축에는 차영상정보(?)를 생성하는 것 외에도 여러가지 기법을 씁니다. FFT나 wavelet transform등을 사용할 수도 있고, 손실압축일 경우는 인간의 시력의 한계를 역이용하여 명도와 채도 관련 정보에 장난을 칠 수도 있어요.

그러나 무엇을 하던 간에, 원본에서 사본으로 가는 시간보다 사본에서 재구성본으로 가는 시간이 더 짧을 것입니다.

(참고로 손실압축의 경우 압축본을 재생했을 때 원본과 "동일"한 결과가 나오지는 않습니다. 대신 눈과 귀로 원본과 불가능한 사본이 나온다면 바람직하겠죠.)

차리서의 이미지

검은해 wrote:
그러나 무엇을 하던 간에, 원본에서 사본으로 가는 시간보다 사본에서 재구성본으로 가는 시간이 더 짧을 것입니다.

그래야할 것 같습니다.

그러고보니 예전에 이런 작업을 했었는데, 아쉽게도 두 시간을 비교해보지 못했던 기억이 납니다. 후배녀석 숙제를 대신 해주느라고 두 프레임(raw 이미지)의 차영상을 추출하는 프로그램을 만들었는데, 미친 척 하고 python + PIL로 짰더랬습니다. 학교 앞 게임방에서 짜면서 저녁을 시켜먹었는데, 마침 프로그램 구현이 일단락돼서 시험삼아 돌려보려는 찰나 저녁 식사가 도착하더군요. 조금 느리리라고는 이미 짐작하고 있었기에 프로그램을 실행시켜놓고 저녁을 먹었습니다. 25분 정도 식사를 하고 자리로 돌아와보니..... 아직도 돌아가고 있더군요. 컴퓨터가 뻗었나 싶었지만 조금 더 기다려보니 무사히 종료되더군요. 총 30분 정도 걸렸습니다.

말씀하신 대로 복구 과정은 이론적으로도 훨씬 빠르리라고 예상되는데, 아쉽게도 당시에 만들어서 시험해보지는 않았습니다. 아무튼, python을 선택했던 당시의 그 '미친 짓'은 요즘도 간간이 이야기거리가 되고 있습니다.

아, 샘플 프레임들은 320px * 200px * 8bit grayscale 영상이었습니다.

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

jinyeoulman의 이미지

참고로 시간을 대충재어 봤습니다.
log디렉토리에는 9000개의 화일이 있습니다.
화일내용은 로그 이므로 거의 비슷합니다.

압축시
tar zcf test2.tar.gz log/
약 5-8초

복원시
tar zxf test2.tar.gz
40-50초

복원할때 화일을 생성해서 느린건 아닌지 생각되기도 합니다.

그래도 확실한 이유를 모르니 조금 답답하군요.

Prentice의 이미지

time tar zxf test2.tar.gz -O > /dev/null
time tar zxf test2.tar.gz -O > /dev/null
time tar zxf test2.tar.gz -O > /dev/null
time tar zxf test2.tar.gz -O > /dev/null
time tar zxf test2.tar.gz -O > /dev/null

연속 5회 실시했을 때 제일 빠른 것과 제일 느린 것을 빼면 얼마나 빠르던가요..? test2.tar.gz는 램디스크 같은 곳에 올라가 있으면 금상첨화..

jinyeoulman의 이미지

real 0m0.804s
user 0m0.650s
sys 0m0.030s
이렇게 나옵니다

jinyeoulman의 이미지

이게 제일 빠른거구요.
real 0m0.755s
user 0m0.640s
sys 0m0.040s

이게 제일 느린 겁니다.
real 0m0.802s
user 0m0.670s
sys 0m0.060s

빼면
real - 0m0.047s
user - 0m0.030s
sys - 0m0.020s

이렇게 됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.