Mercurial > mplayer.hg
annotate DOCS/tech/formats.txt @ 28503:3d22c6da29c9
Use addprefix and addsuffix functions to generate TOOLS variable.
author | diego |
---|---|
date | Thu, 12 Feb 2009 12:13:07 +0000 |
parents | 52f6429a9ba7 |
children | 0f1b5b68af32 |
rev | line source |
---|---|
2764 | 1 1. Input layer, supported devices, methods: |
2 - plain file, with seeking | |
3 - STDIN, without seeking backward | |
6051 | 4 - network streaming (currently plain wget-like HTTP and MMS (.asx)) |
2764 | 5 - VCD (Video CD) track, by direct CDROM device access (not requires mounting disc) |
6 - DVD titles using .IFO structure, by direct DVD device access (not requires mounting disc) | |
7831 | 7 - DVD titles using menu navigation (experimental/alpha, not yet finished!!!) |
8 - CDDA - raw audio from audio CD-ROM discs (using cdparanoia libs) | |
9 - RTP streaming (mpeg-ps over multicast only) | |
19559 | 10 - LIVE555 streaming - support SDP/RTSP (using the LIVE555 libs) |
7831 | 11 - SMB - file access over samba (experimental) |
2764 | 12 |
13 2. Demuxer/parser layer, supported file/media formats: | |
14 | |
15 - MPEG streams (ES,PES,PS. no TS support yet) | |
16 note: mpeg demuxer silently ignore non-mpeg content, and find mpeg packets | |
17 in arbitrary streams. it means you can play directly VCD images (for example | |
18 CDRwin's .BIN files) without extracting mpeg files first (with tools like vcdgear) | |
19 It accepts all PES variants, including files created by VDR. | |
20 Note: VOB (video object) is simple mpeg stream, but it usually has 01BD | |
2765 | 21 packets which may contain subtitles and non-mpeg audio. Usually found on DVD discs. |
2764 | 22 |
2765 | 23 Headers: mpeg streams has no global header. each frame sequence (also called GOP, |
2764 | 24 group of pictures) contains an sequence header, it describes that block. |
2765 | 25 In normal mpeg 1/2 content there are groups of 12-15 frames (24/30 fps). |
2764 | 26 It means you can freely seek in mpeg streams, and even can cut it to |
27 small parts with standard file tools (dd, cut) without destroying it. | |
28 | |
29 Codecs: video is always mpeg video (mpeg1, mpeg2 or mpeg4). | |
30 audio is usually mpeg audio (any layer allowed, but it's layer 2 in most files) | |
2765 | 31 but 01BD packets may contain AC3, DTS or LPCM too. |
2764 | 32 |
2765 | 33 FPS: mpeg2 content allows variable framerate, in form of delayed frames. |
34 It's mostly used for playback 24fps content at 29.97/30 fps (NTSC) rate. | |
2764 | 35 (so called Telecine or 3:2 pulldown effect) |
36 It means you see 30 frames per second, but there are only 24 different | |
37 pictures and some of them are shown longer to fill 30 frame time. | |
7831 | 38 If you encode such files with mencoder, using -ofps 24 or -ofps 23.976 |
2764 | 39 is recommended. |
40 | |
41 - AVI streams. | |
42 Two kind of RIFF AVI files exists: | |
2855 | 43 1. interleaved: audio and video content is interleaved. it's faster and |
2764 | 44 requires only 1 reading thread, so it's recommended (and mostly used). |
45 2. non-interleaved: audio and video aren't interleaved, i mean first come | |
46 whole video followed by whole audio. it requires 2 reading process or | |
47 1 reading with lots of seeking. very bad for network or cdrom. | |
48 3. badly interleaved streams: mplayer detects interleaving at startup and | |
49 enables -ni option if it finds non-interleaved content. but sometimes | |
50 the stream seems to be interleaved, but with bad sync so it should be | |
51 played as non-interleaved otherwise you get a-v desync or buffer overflow. | |
2765 | 52 |
2764 | 53 MPlayer supports 2 kind of timing for AVI files: |
2855 | 54 - bps-based: it is based on bitrate/samplerate of video/audio stream. |
2764 | 55 this method is used by most players, including avifile and wmp. |
56 files with broken headers, and files created with VBR audio but not | |
57 vbr-compliant encoder will result a-v desync with this method. | |
58 (mostly at seeking). | |
59 - interleaving-based: note: it can't be used togethwer with -ni | |
60 it doesn't use bitrate stuff of header, it uses the relative position | |
61 of interleaved audio and video chunks. makes some badly encoded file | |
62 with vbr audio playable. | |
63 | |
64 Headers: AVI files has a mandatory header at the begin of the file, | |
65 describing video parameters (resolution, fps) and codecs. Optionally | |
66 they have an INDEX block at the end of the file. It's optional, but | |
2865 | 67 most files has such block, because it's REQUIRED for seeking. |
68 Btw usually it can be rebuilt from file content, mplayer does it with | |
12228 | 69 the -idx switch. MPlayer can recreate broken index blocks using -forceidx. |
2764 | 70 As AVI files needs index for random access, broken files with no index |
71 are usually unplayable. | |
72 Of course, cutting/joining AVI files needs special programs. | |
73 | |
74 Codecs: any audio and video codecs allowed, but I note that VBR audio is | |
75 not well supported by most players. The file format makes it possible to | |
76 use VBR audio, but most players expect CBR audio and fails with VBR, | |
77 as VBR is unusual, and Microsoft's AVI specs only describe CBR audio. | |
78 I also note, that most AVI encoders/multiplexers create bad files if | |
79 using VBR audio. only 2 exception (known by me): NaNDub and MEncoder. | |
80 | |
2855 | 81 FPS: only constant framerate allowed, but it's possible to skip frames. |
2764 | 82 |
83 - ASF streams: | |
84 ASF (active streaming format) comes from Microsoft. they developed two | |
85 variant of ASF, v1.0 and v2.0. v1.0 is used by their media tools (wmp and | |
86 wme) and v2.0 is published and patented :). of course, they differ, | |
87 no compatibility at all. (it's just a legality game) | |
88 MPlayer supports only v1.0, as nobody ever seen v2.0 files :) | |
89 Note, that .ASF files are nowdays come with extension .WMA or .WMV. | |
7831 | 90 UPDATE: MS recently released the ASF v1.0 specs too, but it has some |
91 restrictions making it illegal to read by us :) | |
2764 | 92 |
93 Headers: Stream headers (codecs parameters) can be everywhere (in theory), | |
94 but all files i've seen had it at the beginning of the file. | |
95 Asf uses fixed packet size, so it is seekable without any INDEX block, | |
96 and broken files are playable well. | |
97 | |
2765 | 98 Codecs: video is mostly microsoft's mpeg4 variants: MP42, MP43 (aka DivX), |
2764 | 99 WMV1 and WMV2. but any codecs allowed. |
2767 | 100 audio is usually wma or voxware, sometimes mp3, but any codecs allowed. |
2764 | 101 |
102 FPS: no fixed fps, every video frame has an exact timestamp instead. | |
103 I've got stream with up to 3 sec frame display times. | |
104 | |
105 - QuickTime / MOV files: | |
106 They come from Mac users, usually with .mov or .qt extension, but as | |
2865 | 107 MPEG Group chose quicktime as recommended file format for MPEG4, |
2767 | 108 sometimes you meet quicktime files with .mpg or .mp4 extension. |
2764 | 109 |
110 At first look, it's a mixture of ASF and AVI. | |
111 It requires INDEX block for random access and seeking, and even for | |
112 playback, like AVI, but uses timestamps instead of constant framerate | |
113 and has more flexible stream options (including network stuff) like ASF. | |
114 | |
115 Headers: header can be placed at the beginning or at the end of file. | |
25489 | 116 About half of my files have it at the beginning, others have it at the end. |
2764 | 117 Broken files are only playable if they have header at the beginning! |
118 | |
119 Codecs: any codecs allowed, both CBR and VBR. | |
2767 | 120 Note: most new mov files use Sorenson video and QDesign Music audio, |
121 they are patented, closed, secret, (TM)-ed etc formats, only Apple's | |
122 quicktime player is able to playback these files (on win/mac only). | |
2764 | 123 |
124 - VIVO files: | |
125 They are funny streams. They have a human-readable ascii header at | |
126 the beginning, followed by interleaved audio and video chunks. | |
127 It has no index block, has no fixed packetsize or sync bytes, and most | |
128 files even has no keyframes, so forget seeking! | |
129 Video is standard h.263 (in vivo/2.0 files it's modified, non-standard | |
130 h.263), audio is either standard g.723 or Vivo Siren codec. | |
131 | |
132 Note, that microsoft licensed vivo stuff, and included in their netshow | |
133 v2.0 program, so there are VfW/ACM codecs for vivo video and audio. | |
134 | |
7831 | 135 - RealMedia files: |
136 A mixture of AVI and ASF features. It has mandatory headers at the | |
137 beginning and an optional INDEX (missing in most files). | |
138 The file is constructed of variable size chunks, with small header | |
139 telling the stream ID, timestamp, flags (keyframe...) and size. | |
140 But it has some features found in ASF files: | |
141 The video is actually double-muxed, the video chunks are really | |
142 appended fragments of the video frame. RV30+ supports B frames, so | |
143 you have to parse some bits of the first fragment to get the real PTS. | |
144 The audio frames are fixed size (CBR) but using the same scrambling | |
145 (out-of-order interleaving) as in the ASF files. | |
146 | |
147 Codecs: Audio is either COOK(er), SIPR(o), ATRAC3 or DNET. | |
148 The DNET is actually a byte-swapped low-bitrate Dolby AC3 variant :) | |
149 Video is RV10 (h263 variant), RV20 (rp G2), RV30 (rp v8) or RV40 (rp v9). | |
150 | |
151 FPS: variable, just like in ASF. | |
152 | |
153 Note, that similarity of real and asf has some background - they worked | |
154 together on the (never finished/used) ASF v2 spec for some time. | |
9129
6ecc0b5c08cb
libgif/libungif based demuxer support for libmpdemux.
arpi
parents:
7831
diff
changeset
|
155 |
6ecc0b5c08cb
libgif/libungif based demuxer support for libmpdemux.
arpi
parents:
7831
diff
changeset
|
156 - GIF files: |
6ecc0b5c08cb
libgif/libungif based demuxer support for libmpdemux.
arpi
parents:
7831
diff
changeset
|
157 The GIF format is a common format for web graphics that supports |
6ecc0b5c08cb
libgif/libungif based demuxer support for libmpdemux.
arpi
parents:
7831
diff
changeset
|
158 animation. These are read through libungif or compatible library. |
6ecc0b5c08cb
libgif/libungif based demuxer support for libmpdemux.
arpi
parents:
7831
diff
changeset
|
159 Variable frame delays are supported, but seeking is not supported. |
6ecc0b5c08cb
libgif/libungif based demuxer support for libmpdemux.
arpi
parents:
7831
diff
changeset
|
160 Seeking will be supported once an index of gif frames can be built. |