Difference between revisions of "MIME Types and File Extensions"

From XiphWiki
Jump to: navigation, search
(add comment about existing .ogg hardware)
(RFC 7845)
 
(54 intermediate revisions by 8 users not shown)
Line 1: Line 1:
WARNING: this page is under development and discussion - none of this are currently official Xiph recommendations.
+
STATUS: [http://www.ietf.org/rfc/rfc5334.txt RFC 5334] encapsulates the below listed policies. More details are [http://wiki.xiph.org/index.php/MIMETypesCodecs here], which also include a specification of the codecs parameter of the MIME types. Use the correct file extensions straight away.
  
== .ogg - application/ogg ==
 
  
* can contain any logical bitstreams multiplexed together in an ogg container
+
IMPLEMENTATION recommendations and patches: see [[MIME-Migration]].
* has been defined as such in 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.
+
== .ogg - audio/ogg ==
* .ogg has more recently also been used for Ogg FLAC and for Ogg Theora
+
 
 +
* 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 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
 +
 
 +
== .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.
 +
 
 +
== .opus - audio/ogg ==
 +
 
 +
* Ogg Opus profile
 +
* Defined by https://tools.ietf.org/html/rfc7845
  
 
== .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, Opus 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.
 +
 
 +
== .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
 +
* 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
 +
 
 +
== .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
  
== .ogv - video/ogg ==
+
== .anx - application/annodex ==
 +
 
 +
* THIS FILE FORMAT IS DEPRECATED.
 +
* 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 ==
 +
 
 +
* THIS FILE FORMAT IS DEPRECATED.
 +
* Profile for audio in Annodex
 +
* covers e.g. [[Vorbis]], [[Speex]], [[FLAC]], [[Opus]], [[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 ==
+
* THIS FILE FORMAT IS DEPRECATED.
 +
* 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
 +
* audio/opus for Opus without container
 +
* text/cmml for CMML without container
 +
* application/kate for the textual representation of Kate (.kate files)

Latest revision as of 21:09, 30 April 2016

STATUS: RFC 5334 encapsulates the below listed policies. More details are here, which also include a specification of the codecs parameter of the MIME types. Use the correct file extensions straight away.


IMPLEMENTATION recommendations and patches: see MIME-Migration.

.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 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

.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.

.opus - audio/ogg

.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, Opus 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.

.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
  • 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

.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

  • THIS FILE FORMAT IS DEPRECATED.
  • 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

  • THIS FILE FORMAT IS DEPRECATED.
  • 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
  • audio/opus for Opus without container
  • text/cmml for CMML without container
  • application/kate for the textual representation of Kate (.kate files)