Ogg 페이지는 Xiph.Org 재단이 개발한 자유 오디오·비디오 컨테이너 형식인 Ogg 스트림의 기본 단위이다. Ogg 스트림은 연속된 페이지(page) 로 구성되며, 각 페이지는 다음과 같은 구조를 가진다.
-
페이지 헤더(page header)
- 캡처 패턴(‘OggS’)
- 버전 번호
- 플래그(시작 페이지, 종료 페이지 등)
- 절대 페이지 시퀀스 번호(Granule position)
- 스트림 식별자(시리얼 번호)
- 페이지 시퀀스 번호(연속 번호)
- 체크섬(전송 중 오류 검출용)
-
세그먼트 테이블(segment table)
- 페이지에 포함된 패킷들의 크기를 바이트 단위로 나열한 8비트 값들의 배열이다.
- 각 값은 해당 패킷 조각의 길이를 나타내며, 255 바이트를 초과하는 경우 여러 개의 값이 연속으로 사용된다.
-
페이로드(payload)
- 실제 오디오·비디오·코덱 데이터가 포함된다.
- 페이로드는 세그먼트 테이블에 정의된 대로 여러 패킷으로 나뉘어 전송될 수 있다.
Ogg 페이지는 스트리밍 환경에서 임의 접근(seek)과 오류 복구를 용이하게 하기 위해 설계되었다. 페이지 단위로 데이터가 전송되므로, 특정 시점(예: 음악 트랙의 특정 위치)으로 빠르게 이동하거나 손상된 페이지만 재전송하도록 할 수 있다.
사용 맥락
- 오디오/비디오 파일 포맷: Ogg Vorbis(오디오), Ogg Theora(비디오), Opus(오디오) 등 다양한 코덱이 Ogg 컨테이너 안에 저장될 때 페이지 구조를 이용한다.
- 스트리밍: 인터넷 라디오, 팟캐스트, 실시간 비디오 스트리밍 등에서 페이지 단위 전송을 통해 연속 재생 및 오류 복구가 가능하다.
- 파일 편집·분석 도구:
oggz,ffmpeg,oggtogg등은 페이지 헤더와 세그먼트 테이블을 파싱하여 파일 메타데이터를 추출하거나 재구성한다.
어원·용어 유래
- Ogg: Xiph.Org가 만든 자유 멀티미디어 컨테이너 형식의 이름이며, 특정 인물이나 단어와 직접적인 연관은 없으며, 프로젝트 초기 명칭으로 채택된 것으로 알려져 있다.
- 페이지(page): 컴퓨터 과학에서 데이터 스트림을 일정 크기의 블록으로 나누어 관리하는 개념을 차용한 용어이다. Ogg 포맷에서는 이러한 블록을 “페이지”라고 부른다.
참고
- Ogg 비트스트림 사양은 Xiph.Org 공식 문서에 정의되어 있다. (예: “Ogg Bitstream Structure”)
- 주요 구현체와 라이브러리의 문서에서도 페이지 구조와 관련된 상세 설명을 제공한다.