MIME Types and File Extensions: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
(add comment about existing .ogg hardware)
(41 intermediate revisions by 7 users not shown)
Line 1: Line 1:
WARNING: this page is under development and discussion - none of this are currently official Xiph recommendations.
STATUS: Work on RFCs and tools is in process to reflect these policies. More details are [http://wiki.xiph.org/index.php/MIMETypesCodecs here], which also include a specification of the codecs parameter of the MIME tyes. Use the correct file extensions straight away.


== .ogg - application/ogg ==
DISCLAIMER: currently, application/ogg, video/ogg, audio/ogg and audio/vorbis are registered MIME types.  Registration for the others will be undertaken. During this process, the "x-" versions of these unregistered MIME types may be used.


IMPLEMENTATION recommendations and patches: see [[MIME-Migration]].
== .ogx - application/ogg ==
* Ogg Multiplex Profile (anything in [[Ogg]])
* can contain any logical bitstreams multiplexed together in an ogg container
* can contain any logical bitstreams multiplexed together in an ogg container
* has been defined as such in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt
* will replace the .ogg extension from RFC 3534 http://www.ietf.org/rfc/rfc3534.txt
* .ogg has traditionally been used for Ogg Vorbis files, so an important subpart of the ".ogg" files will be just Ogg Vorbis. Existing hardware in the wild looks only for .ogg and treats it as unmultiplexed Ogg Vorbis I.
* random multitrack files MUST contain a [[Skeleton]] track to identify all containing logical bitstreams
* .ogg has more recently also been used for Ogg FLAC and for Ogg Theora
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can
* thus, e.g. an annodex file can gracefully degrade to .ogx if an app cannot decode [[CMML]] and/or [[Skeleton]]
* USE: application/ogg has been registered, so can be used immediately
 
== .ogv - video/ogg ==
 
* Ogg Video Profile (a/v in Ogg container)
* apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams
* apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams
* random multitrack files SHOULD contain a skeleton track to identify all containing logical bitstreams
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg
* apps that identify a logical bitstream which they cannot decode SHOULD drop but MAY still decode the ones they can
* This list is not exhaustive (for example, [[Dirac]] + FLAC is acceptable too)
* SHOULD contain a Skeleton track and/or MAY contain a CMML logical bitstream.


== .oga - audio/ogg ==
== .oga - audio/ogg ==


* audio in Ogg
* Ogg Audio Profile (audio in Ogg container)
** Vorbis, Speex, FLAC, Ghost, OggPCM
* Applications supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams
* Covers Ogg [[FLAC]], [[Ghost]], and [[OggPCM]]
* Although they share the same MIME type, Vorbis and Speex use different file extensions.
* SHOULD contain a Skeleton logical bitstream.
* Vorbis and Speex may use .oga, but it is not the prefered method of distributing these files because of backwards-compatibility issues.
 
== .ogg - audio/ogg ==
 
* Ogg Vorbis I Profile
* .ogg applies now for Vorbis I files only
* .ogg has more recently also been used for Ogg FLAC and for Theora, too — these uses are deprecated now in favor of .oga and .ogv respectively
* has been defined in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt for application/ogg, so rfc 3534 will be re-defined
 
RATIONALE: .ogg has traditionally been used for Vorbis I files, in particular in HW players, hence it is kept for backwards-compatibility
 
== .spx - audio/ogg ==
 
* Ogg Speex Profile
* .spx has traditionally been used for Speex files within Ogg and should be considered for backwards-compatibility
 
== .flac - audio/flac ==
 
* FLAC in native encapsulation format
 
== .anx - application/annodex ==
 
* Profile for multiplexed Ogg that includes a skeleton track and at least one CMML logical bitstream
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can
* apps that come across an annodex file and cannot decode CMML and/or Skeleton, but can deal with the others SHOULD gracefully degrade by ignoring these
 
== .axa - audio/annodex ==


== .ogv - video/ogg ==
* Profile for audio in Annodex
* covers e.g. [[Vorbis]], [[Speex]], [[FLAC]], [[Ghost]], [[OggPCM]] inside Ogg with Skeleton and CMML


* a/v in Ogg
== .axv - video/annodex ==
** Theora, Theora + Vorbis, Theora + Speex, Theora + FLAC, Dirac + Vorbis, MNG + FLAC, Tarkin, OggUVS


== .spx - audio/ogg+speex ==
* Profile for video in Annodex
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg with Skeleton and CMML


* .spx has traditionally been used for Ogg Speex files and should be considered for backwards-compatibility
== .xspf - application/xspf+xml ==


== .flac - application/flac ==
* Profile for XSPF
* Covers [[XSPF]], while being used through XML
* Does not cover [[JSPF]], which is XSPF but on JSON


* flac in native encapsulation format
== Ogg Kate files - application/kate ==


* Binary representation of Kate encapsulated in Ogg
* may have a skeleton
* can be used to identify the mime type of the track itself (e.g. in skeleton)
* uses .ogx extension when in a file by itself
* is subdued by the dominant mime type if in a audio or video file to become audio/ogg or video/ogg


== Codec MIME types ==
== Codec MIME types ==


Codecs need their own MIME types for streaming and to be used in multitrack ogg files using skeleton:
Codecs need their own MIME types for streaming in RTP and to be used in multitrack ogg files using skeleton:


* audio/vorbis for Vorbis without container
* audio/vorbis for Vorbis without container
* video/theora for Theora without container
* video/theora for Theora without container
* audio/speex for Speex without container
* audio/speex for Speex without container
* audio/flac for FLAC without container, but extra FLAC Ogg header (?)
* audio/flac for FLAC without and in native container
* text/cmml for CMML without container
* application/kate for the textual representation of Kate (.kate files)

Revision as of 00:06, 20 March 2010

STATUS: Work on RFCs and tools is in process to reflect these policies. More details are here, which also include a specification of the codecs parameter of the MIME tyes. Use the correct file extensions straight away.

DISCLAIMER: currently, application/ogg, video/ogg, audio/ogg and audio/vorbis are registered MIME types. Registration for the others will be undertaken. During this process, the "x-" versions of these unregistered MIME types may be used.

IMPLEMENTATION recommendations and patches: see MIME-Migration.

.ogx - application/ogg

  • Ogg Multiplex Profile (anything in Ogg)
  • can contain any logical bitstreams multiplexed together in an ogg container
  • will replace the .ogg extension from RFC 3534 http://www.ietf.org/rfc/rfc3534.txt
  • random multitrack files MUST contain a Skeleton track to identify all containing logical bitstreams
  • apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can
  • thus, e.g. an annodex file can gracefully degrade to .ogx if an app cannot decode CMML and/or Skeleton
  • USE: application/ogg has been registered, so can be used immediately

.ogv - video/ogg

  • Ogg Video Profile (a/v in Ogg container)
  • apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams
  • covers e.g. Theora, Theora + Vorbis, Theora + Speex, Theora + FLAC, Dirac + Vorbis, MNG + FLAC, OggUVS inside Ogg
  • This list is not exhaustive (for example, Dirac + FLAC is acceptable too)
  • SHOULD contain a Skeleton track and/or MAY contain a CMML logical bitstream.

.oga - audio/ogg

  • Ogg Audio Profile (audio in Ogg container)
  • Applications supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams
  • Covers Ogg FLAC, Ghost, and OggPCM
  • Although they share the same MIME type, Vorbis and Speex use different file extensions.
  • SHOULD contain a Skeleton logical bitstream.
  • Vorbis and Speex may use .oga, but it is not the prefered method of distributing these files because of backwards-compatibility issues.

.ogg - audio/ogg

  • Ogg Vorbis I Profile
  • .ogg applies now for Vorbis I files only
  • .ogg has more recently also been used for Ogg FLAC and for Theora, too — these uses are deprecated now in favor of .oga and .ogv respectively
  • has been defined in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt for application/ogg, so rfc 3534 will be re-defined

RATIONALE: .ogg has traditionally been used for Vorbis I files, in particular in HW players, hence it is kept for backwards-compatibility

.spx - audio/ogg

  • Ogg Speex Profile
  • .spx has traditionally been used for Speex files within Ogg and should be considered for backwards-compatibility

.flac - audio/flac

  • FLAC in native encapsulation format

.anx - application/annodex

  • Profile for multiplexed Ogg that includes a skeleton track and at least one CMML logical bitstream
  • apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can
  • apps that come across an annodex file and cannot decode CMML and/or Skeleton, but can deal with the others SHOULD gracefully degrade by ignoring these

.axa - audio/annodex

.axv - video/annodex

  • Profile for video in Annodex
  • covers e.g. Theora, Theora + Vorbis, Theora + Speex, Theora + FLAC, Dirac + Vorbis, MNG + FLAC, OggUVS inside Ogg with Skeleton and CMML

.xspf - application/xspf+xml

  • Profile for XSPF
  • Covers XSPF, while being used through XML
  • Does not cover JSPF, which is XSPF but on JSON

Ogg Kate files - application/kate

  • Binary representation of Kate encapsulated in Ogg
  • may have a skeleton
  • can be used to identify the mime type of the track itself (e.g. in skeleton)
  • uses .ogx extension when in a file by itself
  • is subdued by the dominant mime type if in a audio or video file to become audio/ogg or video/ogg

Codec MIME types

Codecs need their own MIME types for streaming in RTP and to be used in multitrack ogg files using skeleton:

  • audio/vorbis for Vorbis without container
  • video/theora for Theora without container
  • audio/speex for Speex without container
  • audio/flac for FLAC without and in native container
  • text/cmml for CMML without container
  • application/kate for the textual representation of Kate (.kate files)