1 1. Input layer, supported devices, methods:
2 - plain file, with seeking
3 - STDIN, without seeking backward
4 - network streaming (currently plain wget-like HTTP and MMS (.asx))
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)
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)
10 - LIVE555 streaming - support SDP/RTSP (using the LIVE555 libs)
11 - SMB - file access over samba (experimental)
13 2. Demuxer/parser layer, supported file/media formats:
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
21 packets which may contain subtitles and non-mpeg audio. Usually found on DVD discs.
23 Headers: mpeg streams has no global header. each frame sequence (also called GOP,
24 group of pictures) contains an sequence header, it describes that block.
25 In normal mpeg 1/2 content there are groups of 12-15 frames (24/30 fps).
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.
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)
31 but 01BD packets may contain AC3, DTS or LPCM too.
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.
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.
38 If you encode such files with mencoder, using -ofps 24 or -ofps 23.976
42 Two kind of RIFF AVI files exists:
43 1. interleaved: audio and video content is interleaved. it's faster and
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.
53 MPlayer supports 2 kind of timing for AVI files:
54 - bps-based: it is based on bitrate/samplerate of video/audio stream.
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.
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.
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
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
69 the -idx switch. MPlayer can recreate broken index blocks using -forceidx.
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.
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.
81 FPS: only constant framerate allowed, but it's possible to skip frames.
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.
90 UPDATE: MS recently released the ASF v1.0 specs too, but it has some
91 restrictions making it illegal to read by us :)
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.
98 Codecs: video is mostly microsoft's mpeg4 variants: MP42, MP43 (aka DivX),
99 WMV1 and WMV2. but any codecs allowed.
100 audio is usually wma or voxware, sometimes mp3, but any codecs allowed.
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.
105 - QuickTime / MOV files:
106 They come from Mac users, usually with .mov or .qt extension, but as
107 MPEG Group chose quicktime as recommended file format for MPEG4,
108 sometimes you meet quicktime files with .mpg or .mp4 extension.
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.
115 Headers: header can be placed at the beginning or at the end of file.
116 About half of my files have it at the beginning, others have it at the end.
117 Broken files are only playable if they have header at the beginning!
119 Codecs: any codecs allowed, both CBR and VBR.
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).
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.
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.
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.
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).
151 FPS: variable, just like in ASF.
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.
157 The GIF format is a common format for web graphics that supports
158 animation. These are read through libungif or compatible library.
159 Variable frame delays are supported, but seeking is not supported.
160 Seeking will be supported once an index of gif frames can be built.