맨위로가기

Ogg 페이지

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Ogg 페이지는 Ogg 멀티미디어 컨테이너 형식의 기본 구성 요소이다. 각 Ogg 페이지는 "OggS" 식별자로 시작하며, 버전, 플래그, 시간 오프셋, 스트림 일련 번호, 페이지 시퀀스 번호, CRC 체크섬, 세그먼트 수를 포함한 특정 구조를 따른다. 세그먼트는 패킷의 길이를 나타내며, 255바이트까지의 길이를 가질 수 있다. Ogg 페이지는 동기화를 잃었을 때 디코더가 재개할 수 있도록 설계되었으며, 패킷의 시작과 끝을 표시한다.

더 읽어볼만한 페이지

  • Xiph.Org 프로젝트 - FLAC
    FLAC은 조시 콜슨이 개발한 무손실 오디오 코덱으로, 원본 음질을 유지하면서 파일 크기를 줄이기 위해 오디오 데이터를 압축하며, 4~32비트 샘플 크기, 최대 8 채널을 지원하고, 미국 국립 문서 기록 관리청에서 디지털 오디오에 선호되는 형식으로 지정되었다.
  • Xiph.Org 프로젝트 - Vorbis
    Vorbis는 Xiph.Org 재단에서 개발한 로열티 없는 자유 소프트웨어 오디오 코덱으로, MP3의 대안으로 개발되어 가변, 평균, 고정 비트레이트를 지원하며 갭리스 디코딩을 통해 끊김 없는 재생이 가능하고 MP3보다 나은 음질을 제공한다.
Ogg 페이지
기본 정보
Ogg 로고
Ogg 로고
파일 확장자.ogg, .ogv, .oga, .ogx, .spx, .opus
MIME 형식application/ogg
audio/ogg
video/ogg
application/x-ogg
기술 정보
유형컨테이너 포맷
개발자Xiph.Org Foundation
컨테이너Vorbis, Opus, Theora, Speex, FLAC, Daala, CELT
로열티없음
유형 코드여러가지
추가 정보
웹사이트Ogg 공식 웹사이트

2. 구조

Ogg는 여러 코덱을 단일 파일이나 스트림으로 묶는(mux) 멀티미디어컨테이너 포맷 중 하나이다. Ogg 포맷을 개발한 크리스토퍼 몽고메리(Christopher Montgomery)는 "muxed 코덱 데이터는 코덱 데이터와 분리된 추상적인 레이어여야 하며, 이는 디코딩 시 필요한 버퍼의 양을 제한하기 때문이다"라는 견해를 밝혔다. Xiph.org 재단의 다른 개발자들도 이러한 의견을 지지했으며, 이는 AVI, QuickTime, MPEG과 같은 다른 포맷에 비해 기술적인 장점으로 평가받는다.

각 Ogg 페이지는 데이터의 타임 오프셋을 가지고 있어, 스트리밍 시 효율적인 탐색을 지원하고 시간적인 정확성을 제공한다. 다른 포맷들은 탐색 정보를 위해 스트림의 바이트 위치를 탐색하거나, TOC를 활용한다.

2. 1. Ogg 페이지 구조

모든 Ogg 페이지는 4바이트의 매직 넘버 "OggS (4F 67 67 53)"로 시작한다. 동기화를 잃었을 경우, 디코더는 디코딩 재개를 위해 다음에 나타나는 OggS를 찾을 수 있다. 이 문자열 다음에는 Ogg 버전 0을 나타내는 널(null) 바이트가 이어진다. 2004년 시점에서는 Ogg의 공식 버전은 이것뿐이며, 더 새로운 버전의 계획은 없다.

다음 바이트에서는 타입 플래그(type flags)를 지정한다. 타입 플래그는 다음과 같다.

# 데이터는 마지막 페이지에서 이어진다.

# 스트림의 첫 번째 페이지이다.

# 스트림의 마지막 페이지이다.

이 값들은 덧셈 또는 OR 연산에 의해 결합된다.

다음 8바이트(또는 64비트)는 absolute granule position이라고 불리며, 해당 페이지에서 디코딩되는 데이터의 시간 오프셋을 지정한다. 이 숫자가 의미하는 것은 비디오 코덱에 따라 다르지만, 종종 동영상 데이터의 샘플이나 프레임을 참조한다. Theora처럼 이 필드를 키 프레임과 중간 프레임(interframes)으로 분리하여 사용하는 코덱도 있다.

다음 4바이트는 이 페이지가 속하는 스트림 시리얼 번호(stream serial number)이며, 그 다음 4바이트는 스트림 내의 페이지 시퀀스 번호(page sequence number)이다.

다음 (23바이트째부터 시작) 4바이트는 페이지의 CRC체크섬이다. 이 필드의 값은 변화하므로, 이 필드를 0으로 하여 체크의 결과가 산출된다.

27바이트째는 0~255의 값을 가지며, 포함된 세그먼트 수를 지정한다. 이는 다음에 이어지는 세그먼트 테이블의 크기이기도 하며, 단위는 바이트이다. 세그먼트 테이블의 각 바이트는 세그먼트의 길이를 나타낸다. 각 세그먼트는 길이에서 255바이트까지의 길이를 가질 수 있으며, 페이지에 의해 묶인다.

세그먼트와 관련된 규칙은 다음과 같다.

  • 세그먼트 < 255의 경우: 패킷의 끝을 나타내며, 다음 세그먼트는 새로운 패킷을 시작한다.
  • 패킷이 255의 배수로 끝난 경우: 0바이트 길이의 세그먼트 내에서 끝날 것이다.
  • 해당 페이지의 마지막 세그먼트가 255바이트인 경우: 마지막 패킷은 다음 페이지에 이어진다.

2. 2. 세그먼트

Ogg 페이지는 4바이트의 magic "OggS" (4F 67 67 53)로 시작한다. 동기화를 잃었을 경우, 디코더는 디코딩 재개를 위해 다음에 나타나는 OggS를 찾을 수 있다. 이 문자열 다음에는 Ogg 버전 0을 나타내는 null 바이트가 이어진다. 2004년 시점에서는 Ogg의 공식 버전은 이것뿐이며, 더 새로운 버전의 계획은 없다.

다음 바이트에서는 type flags를 지정한다.

  • 데이터는 마지막 페이지에서 이어진다.
  • 스트림의 첫 번째 페이지이다.
  • 스트림의 마지막 페이지이다.


이 값들은 덧셈 또는 OR에 의해 결합된다.

다음 8바이트(또는 64비트)는 absolute granule position이라고 불리며, 해당 페이지에서 디코딩되는 데이터의 시간 오프셋을 지정한다. 이 숫자가 의미하는 것은 비디오 코덱에 따라 다르지만, 종종 동영상 데이터의 샘플이나 프레임을 참조한다. Theora처럼 이 필드를 키 프레임과 중간 프레임(interframes)으로 분리하여 사용하는 코덱도 있다.

다음 4바이트는 이 페이지가 속하는 stream serial number이며, 그 다음 4바이트는 스트림 내의 page sequence number이다.

다음 (23바이트째부터 시작) 4바이트는 페이지의 CRC체크섬이다. 이 필드의 값은 변화하므로, 이 필드를 0으로 하여 체크의 결과가 산출된다.

27바이트째는 0~255의 값을 가지며, 포함된 세그먼트 수를 지정한다. 이는 다음에 이어지는 세그먼트 테이블의 크기이기도 하며, 단위는 바이트이다. 세그먼트 테이블의 각 바이트는 세그먼트의 길이를 나타낸다. 각 세그먼트는 길이에서 255바이트까지의 길이를 가질 수 있으며, 페이지에 의해 묶인다.

  • 세그먼트 < 255의 경우: 패킷의 끝을 나타내며, 다음 세그먼트는 새로운 패킷을 시작한다.
  • 패킷이 255의 배수로 끝난 경우: 0바이트 길이의 세그먼트 내에서 끝날 것이다.
  • 해당 페이지의 마지막 세그먼트가 255바이트인 경우: 마지막 패킷은 다음 페이지에 이어진다.

3. 탐색 (Seek)

Ogg 페이지는 데이터의 시간 오프셋을 가지고 있어 스트리밍 시 효과적인 탐색을 가능하게 하고 시간적인 정확성을 얻을 수 있다. 다른 포맷에서는 탐색 정보를 얻기 위해 스트림의 바이트 위치를 탐색하거나, TOC를 신뢰하는 방법을 사용한다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com