원래 이것도 내일 아침에 발행하려 했는데, 동영상 이야기에는 워낙에 관심이 없으신 것 같아서 그냥 오늘 몰아서 올립니다. 이건 그렇게 어려운 내용도 아니고 실생활에 도움이 되는 내용이니 초보 분들도 꼭 알아두시기 바랍니다.

이 문제는 지난 7월부터 나타난 증상인데 저는 일시적인 현상으로만 생각했습니다. mkvmerge GUI가 4.1.0으로 업데이트 되면서 오디오 트랙에 header removal compression 기능이 도입되어서 그런 건데, 이게 더 업데이트 되면 기본값 none으로 바뀔 줄 알았더니 이제는 한술 더 떠서 4.2.0에서는 영상에까지 도입되었습니다. 그래서 원래는 KMP 구버전에서 소리가 안 나오는 정도의 증상 뿐이었는데 이제는 KMP나 TVIX 같은 기기에서 영상도 안 나오는 증상이 생겼습니다. 그래서 동영상을 자주 감상하시는 분들 뿐 아니라 인코딩을 자주 하시는 분들도 이 내용은 알아두셔야 할 것 같아서 정리해둡니다.

http://www.bunkus.org/videotools/mkvtoolnix/faq.html


Why does audio or video not play anymore since v4.1.0 (e.g. MP3, AC3, DTS audio tracks, h264 video tracks)?

The Matroska specifications know a feature called "header removal compression". This allows a muxer to keep a certain number of bytes that are identical for each frame in the track headers removing them from the individual frames. This reduces the size of the tracks significantly without altering the content as a demuxer can add the bytes found in the track headers to each frame during demuxing.

Starting with v4.1.0 mkvmerge uses header removal compression for a couple of track types by default. These include AC3, DTS and MP3 audio tracks as well as Dirac and MPEG-4 part 2 (aka. XviD/DivX) video tracks. The user muxing a file may disable it by explicitely selecting 'none' as the compression scheme for such a track.

If your player has difficulties playing such files then it is a bug in that player or in the demuxer but not in mkvmerge. This feature has been part of the Matroska specification since more than six years, and there's no excuse for refusing to add support for it.

The proper solution is to ask the vendor of your player to support this feature. A temporary solution is to re-mux such files turning off extra compression for all tracks.

Here's a list of hardware and software players that do not implement this part of the specification. This list is most likely outdated as updates are released by the authors and manufacturers.

Several players have had issues with this feature in the past but have been fixed in the meantime. For hardware devices this usually means that a firmware upgrade is required. Again this list is probably outdated and incomplete.

  • Software:
    • Media Player Classic (MPC) and Media Player Classic Home Cinema (MPC-HC)
  • Hardware:
    • Freebox
    • Popcorn Hour (at least the C-200)
    • Sony PlayStation 3 (PS3)



위 내용을 대충 요약하자면

1. header removal compression 기능은 매 프레임마다 동일하게 반복되는 헤더 부분을 제거한다.
2. 이 기능은 도입된지 6년도 지난 MKV의 스펙 중 하나이다.
3. 따라서 난 이기능을 제거할 생각이 없다. 제조사 잘못이니 펌웨어 업데이트를 요구하라.

그런데 웃긴건 header removal compression 기능이 실질적으로 용량 절감 효과는 거의 없다는 것입니다. 각 프레임에서 헤더가 차지하는 비율은 매우 작으니까요.



왼쪽이 압축을 한 경우이고 오른쪽이 압축을 하지 않은 경우입니다. 4.37GB DVD 규격의 720p 동영상인데 용량 차이는 불과 2.9MB 밖에 되지 않습니다. 비율로 따지면 0.06% 정도네요.

그럼에도 불구하고 제작자는 압축 기능을 기본값으로 고수하겠다고 합니다. 대부분 MKV 동영상을 먹싱할 때는 이 mkvmerge GUI를 사용합니다. 따라서 재생에 문제를 겪고 있는 분들은 다음과 같은 조치를 취할 수 있습니다.



1. 내가 직접 리먹싱 한다.

재생되지 않는 동영상을 mkvmerge GUI로 열어서 header removal compression 기능을 none으로 설정하고 다시 저장합니다. 각 트랙마다 Extra options 탭이 있는데 거기서 Compression 값을 none으로 지정하시면 됩니다. TIVX 사용자 분들은 이렇게 리먹싱 해서 보시면 됩니다. 물론 근본적인 해결책으로는 펌웨어가 업데이트 되기를 기대하는게 좋겠죠.




2. KMP 구버전의 경우 할리 스플리터를 사용한다.

KMP 구버전의 내장 스플리터는 이 옵션을 지원하지 않습니다. 저는 KMP를 설치하면 항상 기본 셋팅중에 MKV랑 TS 파일에서 할리 스플리터를 사용하도록 설정했기 때문에 몰랐는데 방금 기본 스플리터로 설정해보니 4.2.0으로 압축 먹싱한 파일을 재생하지 못하는군요.

우선 할리 스플리터를 설치하세요. 아래 페이지 우측에 있습니다.
http://haali.su/mkv/

그런 다음 KMP 환경설정에서 아래와 같이 설정하시면 됩니다.




※ 인코더 분들은?

조금 귀찮더라도 먹싱할 때 header removal compression 옵션을 none으로 지정해주시는 쪽이 좋겠죠? 왜냐하면 대부분 동영상을 재생하는 "감상자" 분들은 동영상에 대한 지식이 전혀 없는 초보 분들이기 때문에 초보 분들께 직접 문제를 해결하도록 던져주는 것은 너무 불친절한 태도라고 생각합니다. 따라서 자율적으로 인코더 분들이 비압축 먹싱을 하시는 편이 좋다고 생각합니다.

댓글 보고 생각났는데 none으로 설정하는게 귀찮으신 분들은 그냥 4.0 버전 사용하세요.