비슷한 이름의 성인 사이트에 대한 내용은 Xvideos 문서 참고하십시오.
🎞️ 비디오 코덱 및 포맷 | |||
{{{#!wiki style="margin: 0 -10px -5px; min-height: 26px" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -6px -1.5px -13px" | <colbgcolor=#555>코 덱 | <colbgcolor=#555> | MPEG-1 · MPEG-2 Part 2(H.262) · MPEG-4 Part.2 (DivX · Xvid) · H.261 · H.262 · H.263 · H.264 · H.265 · H.266 |
기타 | DV · WMV · Theora · VP8 · VP9 · AV1 · Apple ProRes · Bink · GoPro CineForm · Motion JPEG | ||
컨테이너(확장자) | ASF · AVI · BIK · FLV · MKV · MOV · MP4 · MPEG · OGG(OGV) · SKM · TS · WebM · WMV | ||
관련 틀: 그래픽 · 오디오 · 비디오 |
1. 개요
공식 사이트DivX의 유료화에 반발하여 2001년 1월에 설립한 오픈소스 그룹에서 3년 동안 개발하고 안정화시킨 후 2004년 5월에 발표한 코덱이다. 최신 버전은 2019년 12월 28일에 발표된 버전1.3.7.
2. 특징
- 1.0.0 Final 버전이 발표된 2004년 5월 8일 (체인지 로그) 이후, DivX의 자리를 빠르게 대체하면서 5년 동안 동영상 코덱의 1인자로 자리잡고 있었는데 인터넷 스트리밍 환경에서 널리 사용된 WMV보다 소장용으로 더 많이 사용되었다. 2009년 10월 22일에 출시된 Windows 7부터 H.264가 기본 지원될 겸 하드웨어 성능의 상향 평준화로 인해 H.264로 빠르게 대체되면서, 2010년대 중반부터는 거의 사용하지 않는다.
- AVI, MKV, MP4 컨테이너에서 지원하고 있다. 단 BVOP(B-frame) 사용시 기기 호환 문제가 없는 한 AVI 포맷은 권장되지 않는다. 과거 AVI 포맷이 워낙 널리 쓰인 탓에 잘 알려지지 않았지만 본래 AVI 포맷은 BVOP에 필수적인 재생 순서를 벗어나는 패킷을 용인하지 않는다. 때문에 BVOP가 사용된 xvid 영상을 AVI로 먹싱하려면 packed B-frames라는 편법이 쓰이는데 이는 대부분의 상황에서 바람직하지 않다. 물론 BVOP를 사용하지 않는다면 상관없다.
- 인코딩은 8K 해상도까지 지원하지만 LG/삼성 TV에서는 1080p 30fps까지만 지원한다.
- 압축률은 SD·HD·FHD 해상도 기준 MPEG-2와 H.264의 중간 정도다.
- MPEG-2에 비해 깍두기 현상이 다소 줄었지만 후속작인 H.264보다는 심한 편이다. 1080p 30fps 기준 약 8~10Mbps 미만이면 잘 드러난다.
- 퀀타이저의 경우 비트레이트 할당이 비효율적이라 잘 사용되지 않았다.
- 퀄리티(CRF), HDR을 지원하지 않는다. 가변 프레임 레이트(VFR)는 NVOP(Null-frame)를 통해 구현이 가능하나 이때 BVOP와 동시에 사용할 수 없으며 적용하기도 까다롭다. 참고로 정상적인 MPEG-4 ASP 스트림은 AVC나 HEVC와 달리 동영상 컨테이너의 타임코드 리먹싱을 통한 VFR이 불가능하기 때문에 인코딩 단계에서 NVOP를 제대로 적용해야 한다.
- bvhq 활성화시 멀티스레드 지원이 불안정해지며 인코더가 뻗어버리는 문제가 있다. 이 문제는 특히 고해상도 인코딩시 자주 발생한다. bvhq를 포기하거나 멀티스레드를 포기하거나 양자택일이 필요하다. 참고로 ffmpeg를 사용할 시 레퍼런스 인코더의 vhqmode에 상응하는 옵션[1]은 mbd(macroblock decision)이며 이 옵션을 어떻게 설정했느냐에 따라 자동으로 멀티스레드에 제한을 걸기 때문에 사용자가 크게 신경쓸 것은 없다.
- xvid로 인코딩할 필요가 있다면, 상기한 단점에도 불구하고, 레퍼런스 인코더나 mencoder[2]를 사용하는 것이 권장된다. ffmpeg의 xvid는 대략 2012년도 이래로 업데이트가 멈춰 있는 데다 B-frame을 활성화하면 비디오 싱크가 어긋나는 등 온갖 심각한 버그가 있기 때문이다. 참고로 mencoder는 2018년 말부터 xvidcore 1.3.5를 내장하고 있다. 다만 r38188 빌드부터 멀티스레드 지원이 안 되는 버그가 있다.
- 한편 ffmpeg는 mpeg4라는 이름의 자체 MPEG-4 ASP 인코더를 내장하고 있다. MPEG-4 ASP 계열 인코딩이 꼭 필요한데 xvid가 마음에 들지 않는다면 대안으로 고려할 수 있다. 다만 이 코덱은 xvid의 이런저런 버그들이 없는 대신 1패스 인코딩시 비트레이트 배분 능력이 크게 뒤떨어지고 또 B-frame의 하드웨어 가속 호환성 문제가 있다.
[1] 다만 1:1로 대응하지는 않으며 simple, bits, RD 3개 옵션으로 단순화되어 있다.[2] 이때 비디오 코덱을 lavc libxvid가 아닌 xvid로 설정해야 한다. lavc xvid를 사용하면 ffmpeg를 사용했을 때와 똑같은 버그가 발생한다.