跳转到内容

User:Littlebtc/Ogg

维基百科,自由的百科全书
Ogg
扩展名
.ogv, .oga, .ogx, .ogg
互联网媒体类型
video/ogg, audio/ogg, application/ogg
开发者Xiph.Org 基金會
格式类型Container format
作为容器VorbisTheoraSpeexFLACDirac等等

Ogg是一個自由開放標準容器格式,由Xiph.Org 基金會所維護。Ogg格式並不受到軟體專利的限制,並以設計用於有效率地串流媒體資訊和處理高品質的多媒体

「Ogg」意指一種文件格式,可以納入各式各樣自由开放源代码编解码器,包含音效视频、文字(像字幕)與元数据的處理。

在Ogg的多媒體框架下,Theora提供有損的影像層面,而通常用音樂導向的Vorbis編解碼器作為音效層面。人類演說的壓縮編解碼器Speex無損的音效壓縮編解碼器FLACOggPCM也可能作為音效層面使用。

「Ogg」這個詞彙通常意指Ogg Vorbis此一音频文件格式,也就是將Vorbis編碼的音效包含在Ogg的容器中所成的格式。在以往,.ogg此一副檔名曾經被用在任何Ogg支援格式下的內容,但在2007年,Xiph.Org基金會為了向後相容的考量,提出請求,將.ogg只留給Vorbis格式來使用。 Xiph.Org基金會決定創造一些新的副檔名和媒體格式來描述不同類型的內容,像是只包含音效所用的.oga,包含或不含聲音的影片(涵蓋Theora)所用的.ogv和程式所用的.ogx。[1]

Xiph.Org基金會的目前版本的參照實裝是2005年11月27日釋出的libogg 1.1.3.[2]另一個版本libogg2也可以在Xiph.Org基金會的SVN套件庫中找到。這兩個都是在新BSD许可证下釋出的自由软件

因為其格式自由,和其參照實裝並非Copyleft形式,無論自由或專有、商業或非商業的媒体播放器,甚至部分製造商的可攜式媒體播放器全球定位系统接收器都採用了Ogg下的各種編解碼器。

Naming

[编辑]

It is sometimes assumed that the name Ogg comes from the character of Nanny Ogg in Terry Pratchett's Discworld novels. However, it derives from ogging, jargon from the computer game Netrek which came to mean doing something forcefully, possibly without consideration of the drain on future resources. At its inception, the Ogg project was thought to be somewhat ambitious given the power of the PC hardware of the time.[3][4]

File format

[编辑]

The Ogg bitstream format, spearheaded by the Xiph.Org Foundation, has been created as the framework of a larger initiative aimed at developing a set of components for the coding and decoding of multimedia content which are available free of charge and are freely re-implementable in software.

The format consists of chunks of data each called an Ogg Page. Each page begins with the "OggS" string to identify the file as Ogg format.

A serial number and page number in the page header identifies each page as part of a series of pages making up a bitstream. Multiple bitstreams may be multiplexed in the file where pages from each bitstream are ordered by the seek time of the contained data. Bitstreams may also be appended to existing files, a process known as chaining, to cause the bitstreams to be decoded in sequence.

A BSD-licensed library, called libogg, is available to encode and decode data from Ogg streams. Independent Ogg implementations are used in several projects such as RealPlayer and a set of DirectShow filters.

Page structure

[编辑]

The following is the field layout of an Ogg page header:

The field layout of an Ogg page header
The field layout of an Ogg page header
Capture Pattern - 32 bits
The capture pattern or sync code is a magic number used to ensure synchronisation when parsing Ogg files. Every page starts with the four byte sequence 'OggS'. This assists in resynchronising a parser in cases where data has been lost or is corrupted, and is a sanity check before commencing parsing the page structure.
Version - 8 bits
This field indicates the version of the Ogg bitstream format, to allow for future expansion. It is currently mandated to be 0.
Header Type - 8 bits
This is an 8 bit field of flags, which indicates the type of page which follows. The rightmost or least significant bit is considered bit 0, with value 0x01, the next least significant digit is bit 1, with value 0x02. The third is bit 2, with value 0x04, and so on.
Bit Value Flag Page type
0 0x01 Continuation The first packet on this page is a continuation of the previous packet in the logical bitstream.
1 0x02 BOS Beginning Of Stream. This page is the first page in the logical bitstream. The BOS flag must be set on the first page of every logical bitstream, and must not be set on any other page.
2 0x04 EOS End Of Stream. This page is the last page in the logical bitstream. The EOS flag must be set on the final page of every logical bitstream, and must not be set on any other page.
Granule Position - 64 bits
A granule position is the time marker in Ogg files. It is an abstract value, whose meaning is determined by the codec. It may for example be a count of the number of samples, the number of frames or a more complex scheme.
Bitstream Serial Number - 32 bits
This field is a serial number which identifies a page as belonging to a particular logical bitstream. Each logical bitstream in a file has a unique value, and this field allows implementations to deliver the pages to the appropriate decoder. In a typical vorbis+theora file, one stream will be the audio (vorbis), and the other will be the video (theora)
Page Sequence Number - 32 bits
This field is a monotonically increasing field for each logical bitstream. The first page is 0, the second 1, etc. This allows implementations to detect when data has been lost.
Checksum - 32 bits
This field provides a checksum of the data in the entire page, performed with the checksum field set to 0. This allows verification that the data has not been corrupted since it was created. Pages which fail the checksum should be discarded.
Page Segments - 8 bits
This field indicates the number of segments that exist in this page. It also indicates how many bytes are in the segment table which follows this field. There can be a maximum of 255 segments in any one page.
Segment Table
The segment table is an 8 bit vector of values indicating the length of each segment within the page body. The number of segments is determined from the preceding Page Segments field. Each segment is between 0 and 255 bytes in length.

The segments provide a way to group segments into packets, which are meaningful units of data for the decoder. When the segments length is indicated to be 255, this indicates that the following segment is to be concatenated to this one and is part of the same packet. When the segments length is 0-254, this indicates that this segment is the final segment in this packet. Where a packets length is a multiple of 255, the final segment will be of length 0.

Where the final packet continues on the next page, the final segment value will be 255, and the continuation flag will be set on the following page to indicate that the start of the new page is a continuation of last page.

Metadata

[编辑]

Currently, there is no official standard for including metadata in Ogg containers. Implementation is still a long way off as of Quarter 3, 2007. The Xiph.Org Foundation are currently welcoming suggestions and feedback. Suggested metadata implementation methods include the following: [5]

  • Dublin core in RDF
  • XML-encoding (options include generic RDF, CMML, and XMP)
  • MusicBrainz XML MetaData
  • Ogg Skeleton is emerging as the way to approach machineable metadata.

Metadata must currently be included in the codec. There is fairly good software support for Vorbis metadata—often referred to as comments. But software support for Theora and FLAC comments in Ogg containers is very limited.

History

[编辑]
The “Play Ogg” web button

In May 2003, two Internet RFCs were published relating to the format. The Ogg bitstream was defined in RFC 3533 (which is classified as 'informative') and its Internet content type (application/ogg) in RFC 3534 (which is, as of 2006, a proposed standard protocol).

Although Ogg hasn't reached anywhere near the ubiquity of the MPEG standards (e.g.: MP3 / MP4), as of 2006, it is commonly used to encode free content (such as free music, multimedia on Wikimedia projects and Creative Commons files) and has started to be supported by a significant minority of digital audio players. Also supporting the Ogg format have been many popular video game engines, including Doom 3, Unreal Tournament 2004, Myst IV: Revelation, Serious Sam: The Second Encounter, Lineage 2 and the Grand Theft Auto engines. The more popular Vorbis codec has built-in support on many software players, and extensions are available for nearly all the rest. Other codecs are less well supported, although extensions are often available.

On May 16, 2007, the Free Software Foundation started a campaign to increase the use of Vorbis “as an ethically, legally and technically superior audio alternative to the proprietary MP3 format.”[6] People are also encouraged to support the campaign by adding a web button to their website or blog. For those who don't want to download and use FSF's suggested Ogg player (VLC), the Xiph.Org Foundation has an official codec[7] for QuickTime-based applications in Windows and Mac OS X, such as iTunes players and iMovie applications; and Windows users can install a Windows Media Player Ogg codec[8].

Ogg codecs

[编辑]

Ogg is only a container format. The actual audio or video encoded by a codec will be stored inside an Ogg container. Ogg containers may contain streams encoded with multiple codecs, for example, an audio video file may contain data encoded by both an audio codec and a video codec.

Being a Container format, Ogg can embed audio and video in various formats (such as MPEG-4, Dirac, MP3 and others) but usually Ogg is used with the following:

  • Text codecs
    • Writ: a text codec designed to embed subtitles or captions
    • CMML: a text/application codec for timed metadata, captioning, and formatting
  • Video codecs
    • Theora: based upon On2's VP3, it is targeted at competing with MPEG-4 video (for example, encoded with DivX or Xvid), RealVideo, or Windows Media Video.
    • Tarkin: an experimental codec utilizing discrete wavelet transforms in the three dimensions of width, height, and time. It has been put on hold since February 2000, with Theora becoming the main focus for video encoding.
    • Dirac: an experimental codec developed by the BBC as the basis of a new codec for the transmission of video over the Internet. The Schrödinger project aims to provide portable libraries, written in C, that implement the Dirac codec. It also allows to embed Dirac inside the Ogg container format.
    • OggUVS: a draft codec for storing uncompressed video.
  • Subtitle structures
    • Annodex: A free and open source set of standards developed by CSIRO to annotate and index networked media.

See also

[编辑]


References

[编辑]
  1. ^ MIME Types and File Extensions. XiphWiki. 2007年9月7日 [2009年2月12日]. 
  2. ^ [Vorbis-dev] libogg 1.1.3 and libvorbis 1.1.2 releases
  3. ^ Xiph.org: naming. Xiph.org Foundation. 2006-01-07 [2008-02-16]. At the time Ogg was starting out, most personal computers were i386s and the i486 was new. I remember thinking about the algorithms I was considering, "Woah, that's heavyweight. People are going to need a 486 to run that..." While the software ogged the music, there wasn't much processor left for anything else. 
  4. ^ Medo. Ogg Vorbis - Better Than Mp3?. BBC. 2005-12-20 [2007-06-24]. 
  5. ^ Ogg Metadata. Xiph Wiki. 2005-12-20 [2007-08-31]. 
  6. ^ 'Play Ogg': FSF launches free audio format campaign
  7. ^ Xiph.Org Foundation: Ogg QuickTime Components for iTunes and iMovie (Windows and MacOSX)
  8. ^ Windows Media Player Directshow Filters for Vorbis, Speex, Theora and FLAC
[编辑]

Template:Xiph.org