?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

(질문 및 답변에 올라왔던 질문 글에 대한 댓글을 정리해서 이곳에 옮깁니다. 저 자신도 아직 배우는 입장이라 불완전한 부분도 있을 수 있습니다. 본문의 내용에 대해 다른 의견을 가지거나 보다 깊은 논의를 하고자 하시는 분들은 댓글로 남겨 주시면 감사하겠습니다.)

 

"내 경험으로는 재인코딩해서 비트레이트를 높였더니 퀄리티가 향상되더라." 하는 주장을 하시는 분들이 종종 있습니다. 몇몇 분이 자신도 그런 걸 느꼈다고 동조하시면 이를 일반적으로 사실인 것으로 받아들이는 분들이 있는데 잘못된 이해를 불식하기 위해 거기에 대해서 설명하고자 합니다.

 

결론적으로, 그런 결과는 우연이 동반된 개인적인 민감도와 취향의 차이입니다. 왜냐면 영상도 그렇고 오디오도 그렇고, 대부분의 코덱들이 사용하는 '손실 압축'은 기본적으로 '손실'이 전제되므로 재인코딩은 반드시 정보의 손실을 수반하기 때문입니다. 원본을 재인코딩한다는 건, 원본을 디코딩해서 풀어헤치고, 그걸 다시 손실 압축하는 과정입니다. 이 과정에서 일부 정보는 손실시킬 수밖에 없으며 그 기준은 아래 설명하는 몇 가지 원칙에 따릅니다.

 

원본에서 어떤 부분을 손실시킬지 결정하는 가장 큰 틀의 결정적이고 객관적인 잣대가 영상에서는 '퀀타이저(quantizer, 또는 qp = quantization parameter)'고 오디오에서는 '비트레이트'가 됩니다. 뭐, qp도 현상적으로는 비트레이트로 나타나게 되니 결국 비트레이트가 잣대가 된다고도 말할 수 있겠습니다.

 

그리고 또 다른 기준으로는, '인간이 일반적으로 인지하는 수준'이 있습니다. 즉, 영상에서는 우리 인간의 눈이 일반적으로 잘 캐치하지 못하는 부분을 손실시키는 거고, 오디오에서는 우리 귀가 잘 듣지 못하는 부분을 손실시키는 겁니다.

 

이 부분이 문제가 됩니다. '인간이 일반적으로 인지하는 수준'이라는 게, 평균적이고 통계적으로는 그럴 수 있겠지만 막상 백이면 백 모든 사람이 다 같은 게 아니기 때문에.

 

우선 영상으로는, 인간이 색의 차이(chrominance)보다 명암의 차이(luminance)에 더 민감하기 때문에 픽셀 간 색 차이는 대충 건너뛰자 하는 게 우리가 늘 접하는 chroma subsampling, 즉 YUV444가 어떻고 YUV422가 어떻고 YUV420이 어떻고 하는 것들입니다. 모니터들은 RGB로 표현되는데 왜 영상들은 색공간을 YUV로 표현할까요? 그건 흑백 TV에서 컬러 TV로 전환되는 과정의 기술적인 대응에도 이유가 있겠지만 (명암만 표현 -> 명암에 색조를 추가), 근본적으로는 바로 앞에서 설명한 내용 때문입니다. 즉, 손실은 있더라도 인간이 인지하기엔 거의 불가능하기 때문에 픽셀들의 색 차이를 대충 뭉뚱그리면 용량도 절약하면서 화질 차이를 거의 느낄 수 없기 때문입니다.

 

그걸 기본으로 깔고, 거기다 심리-인지과학과 관련된 몇 가지 이론을 적용하여 무슨 무슨 변환을 해서 손실을 시키는 게 바로 영상의 코덱들인 겁니다.

 

근데 막말로, 명암 차이보다 색 차이에 더 민감한 인간이 있을 수도 있지 않겠습니까? 색 차이에 둔한 색맹들도 많지만, 그 반대의 경우도 없다고는 단언할 수는 없겠죠. 그리고 어떤 사람은 노이즈에 더 민감한 사람도 있겠고, 어떤 사람은 머리카락같이 미세한 디테일에 더 민감한 사람도 있겠고, 하다못해 잔상에 대해 극도로 예민해서 남들은 캐치하지 못하는 움직임 변화를 민감하게 캐치하는 사람도 있겠죠.

 

오디오의 경우에도 유사합니다. 평균적인 인간이 인지하기 힘든 주파수대는 생략하면서 손실시키면 용량도 절약하면서 음질 차이를 거의 느낄 수 없죠. 하지만 누가 압니까? 진짜 돌고래같이 청각에 예민한 사람이 있을 수도 있겠고, 특정 주파수에 더욱 끌리는 사람도 있을 수 있겠죠.

 

다시 원래 문제로 돌아가서, 재인코딩에 비트레이트를 좀 높였더니 퀄리티가 더 낫게 들리거나 보였다는 것은, 원본을 그 이전의 원본에서 인코딩할 때 적용했던 손실률(비트레이트로 표현되는...)보다 손실률을 좀 줄이는 설정으로 (보다 높은 비트레이트) 재인코딩을 했더니 그게 본인에게 더 낫게 들리거나 보였다는 것입니다. 원본과 같은 손실률, 즉 원본과 비슷한 비트레이트를 적용하라는 건, 원본이 그 이전 원본의 정보에서 누락시켰던 것과 비슷한 기준으로 정보를 잘라내도록 하라는 것입니다. 코덱에 따라 틀리겠지만, 좋은 코덱은 그럴 경우 대부분의 원본 정보를 보존합니다. 필터를 적용하면 손실의 기준이 달라질 수 있겠지만, 필터를 적용하지 않는 한은 그렇습니다. 놓치는 부분도 있겠지만 그것을 인지할 수 있다는 것은 우연이거나 개인적인 민감도의 차이입니다. 그리고 우리가 아는 현재의 대부분의 코덱들은 좋은 코덱들이죠.

 

원본을 그대로 보존하는 인코딩은 무손실 압축 방식의 코덱, 또는 퀀타이저를 0으로 주고 하는 손실 압축뿐입니다. 후자의 경우도 결국 무손실 압축 방식과 다르지 않습니다. 오디오의 경우에는 손실 압축의 퀀타이저 0에 해당하는 옵션이 없으니 (이건 확실하지 않습니다만...) 결국 무손실 압축의 코덱을 쓰는 수밖에 없습니다.

 

비디오의 무손실 압축은 전문적인 영상 편집을 위해 쓰이기도 합니다. 어떤 코덱들이 있는지는 위키피디어의 해당 문서를 참고하십시오. 오디오 역시 많은 무손실 압축 코덱들이 있지만 우리가 일상적으로 많이 쓰는 것들 중에는 FLAC이나 ALAC 등이 그에 해당합니다. 무손실 압축이 어떤 것인지, 각 미디어에 어떤 종류가 있는 것인지에 대한 자세한 내용은 위키피디어의 해당 문서를 참고하시면 됩니다.

 

오디오의 손실 압축을 예로 들면, AAC나 MP3의 경우에는 손실 압축 방식이니 비트레이트를 원본보다 높게 준다고 해도 손실이 일어날 수밖에 없습니다. 단지, 무손실에는 좀더 가까워지겠죠. 제가 개인의 차이라고 말씀드리는 것은, 대부분의 사람들에게 그 차이가 별로 크게 다가오지는 않을 것이기 때문입니다. 하지만 그 차이가 느껴지신다면 당연히 비트레이트를 높게 해서 인코딩하시는 게 맞겠죠.

 

그리고 서로 다른 코덱으로 변환할 때는 (예를 들어 AAC로 된 오디오를 MP3로 변환한다든지 하는 식으로) 코덱들 간에 손실과 압축의 알고리듬과 효율이 다르기 때문에 그런 걸 어느 정도 고려하는 게 좋습니다. 예를 들어, AAC 128 Kbps를 MP3 192 Kbps로 변환하는 것도 나쁘지 않습니다. 마치 2 Mbps의 비트레이트를 가진 HEVC 영상을 H264 3 Mbps나 4 Mbps로 바꾸듯요. 어차피 정보의 손실은 일어나겠지만 적정 수준에서 최대한 보존하는 쪽으로 가는 게 낫습니다. 여기서 '적정 수준'이라는 게 중요한데, 그건 본인에게 맞는 수준을 말하는 겁니다.

 

다시 말씀드리자면, 인코딩의 결과에 대한 퀄리티 인식은 순전히 주관적인 것입니다. 자신이 그렇게 경험을 했다면 그 방식을 따르는 게 맞습니다. 단지, 그것을 일반화해서 주장하는 것은 잘못된 것이라고 말하고 싶습니다.

Facebook Twitter Pinterest Kakao
  • ?
    조토마테 2018.09.20 08:01
    특정 알고리즘을 써서 데이터를 삽입하지 않고서야 원본에서 더 좋아질 순 없죠.
    단순히 비트레이트 높여서 퀄리티 좋아지면 노벨상 줘도 당연
    비트레이트 올리면 용량만 손해인데 왜 하는지 의문입니다.
  • ?
    JKyle 2018.09.20 10:02

    제목의 주장이 좀 오해의 소지가 있는 게, '원본보다 낫다'는 주장을 하는 분도 있고, '원본보다 높은 비트레이트로 인코딩한 게 원본과 같은 비트레이트로 인코딩한 것보다 낫다'고 주장하시는 분도 있습니다. 전자보다는 후자가 더 많은 것 같습니다만, 때로는 정확히 어떤 주장을 하고자 하는 건지 본인도 헷갈려하는 분들도 많죠. 링크 달아놓은 게시글을 쓴 분께서는 후자의 주장을 하신 것입니다.

     

    일단 원리를 설명하기 위해 제목을 좀 자극적으로 그렇게 달았는데 이게 오해를 가져오지는 않을지 염려가 되긴 하네요. 아무튼, 최소한 이 사이트를 방문하시는 분들만이라도 개념을 좀 명확히 해서 이해하셨으면 좋겠습니다.

  • ?
    유토짱 2018.10.03 11:26
    저 경우에는 보존용 만들때, Bitrate를 원본과 같이 줍니다. 좀더 적게 줘서 용량도 줄이고,화질차이는 거의 안나겠지만, 심리적으로 원본과 같이 주면 손실은 적겠지 하는 생각입니다.
  • ?
    식사동토박이 2018.12.08 19:13
    원본 SD화질을 초 고퀄리티 인코딩으로 FHD급으로 만들순 없잖아요.
  • ?
    ballsun 2019.12.30 19:39

    고화질로 보고싶으면 그냥 madvr을 쓰면됩니다.
    대신 재대로 쓰려면 글카가 좋아야되겠죠 (1070이상)
    제가 써봤을때 1080p 24fps영상 기준으로
    내장글픽이면 구동불가~최하옵
    1070이면 중상옵
    2080ti 쯤이면 풀옵션

  • ?
    츽힌 2022.04.23 13:13
    불규칙한 형태의 고운 자갈이 섞인 모래를 체로 거른다고 표현을 하면 맞을까요.. 기 막힌 우연?으로 어떠한 특정한 범위에 있는 음향이나 영상의 품질이 향상될 수는 있겠다는 생각입니다만.. 저도 한 참을 다양하게 시도는 해봤는데 전혀 안 되더라구요 하하 그러다 보니 무의식중에 높게 잡는 게 손버릇이 되는 바람에 쫌 낭패입니다..

  1. HEVC 코덱 설정->튜닝 옵션별 각 화질 비교

  2. H264(AMF), HEVC(AMF) 옵션 도움말

  3. H264(NVENC), HEVC(NVENC) 옵션 도움말

  4. 필터 적용 사례: 로고/워터마크 제거

  5. HDR 영상과 10비트 영상

  6. 색공간과 Bit Depth

  7. 샤나인코더 영상 사이즈 변경 옵션을 통한 FFmpeg 필터의 기초 이해

  8. 샤나인코더의 H264 설정과 FFmpeg의 x264 설정 이해

  9. FFmpeg 명령어 구조와 샤나인코더 작동 방식 이해

  10. [인포그래픽] 인코딩 작업 흐름과 자막 작업

  11. [인포그래픽] 인코딩 작업의 흐름도

  12. [필독] 비디오 코덱과 기본 용어 (H.264, HEVC)

  13. 샤나인코더로 움짤 만들기

  14. 기록 보기에서 Consider increasing the value for the 'analyzeduration' and 'probesize' options 내용이 있을 때 해결법

  15. SRT SMI 자막 인코딩 이용시 한글 깨짐 자막변환 방법

  16. webm VP9 멀티스레드 활성화하는 방법, 속도 향상시키는 방법

  17. "비트레이트를 원본보다 높게 주면 원본보다 퀄리티가 나아질 수 있다"는 주장에 대해

  18. SSIM, PSNR로 측정한 NVENC 인코딩

  19. 인코딩된 파일의 PSNR, SSIM 값 계산하기

  20. 8비트 원본을 10비트로 인코딩하면 8비트로 인코딩할 때보다 화질이 더 낫다?

Board Pagination Prev 1 2 3 4 Next
/ 4