Commit | Line | Data |
---|---|---|
85466e1e SS |
1 | @chapter Muxers |
2 | @c man begin MUXERS | |
3 | ||
f8a45fa1 | 4 | Muxers are configured elements in Libav which allow writing |
85466e1e SS |
5 | multimedia streams to a particular type of file. |
6 | ||
f8a45fa1 | 7 | When you configure your Libav build, all the supported muxers |
85466e1e SS |
8 | are enabled by default. You can list all available muxers using the |
9 | configure option @code{--list-muxers}. | |
10 | ||
11 | You can disable all the muxers with the configure option | |
12 | @code{--disable-muxers} and selectively enable / disable single muxers | |
13 | with the options @code{--enable-muxer=@var{MUXER}} / | |
14 | @code{--disable-muxer=@var{MUXER}}. | |
15 | ||
16 | The option @code{-formats} of the ff* tools will display the list of | |
17 | enabled muxers. | |
18 | ||
19 | A description of some of the currently available muxers follows. | |
20 | ||
77d4ed7a | 21 | @anchor{crc} |
a4effe43 SS |
22 | @section crc |
23 | ||
24 | CRC (Cyclic Redundancy Check) testing format. | |
25 | ||
26 | This muxer computes and prints the Adler-32 CRC of all the input audio | |
27 | and video frames. By default audio frames are converted to signed | |
28 | 16-bit raw audio and video frames to raw video before computing the | |
29 | CRC. | |
30 | ||
31 | The output of the muxer consists of a single line of the form: | |
32 | CRC=0x@var{CRC}, where @var{CRC} is a hexadecimal number 0-padded to | |
33 | 8 digits containing the CRC for all the decoded input frames. | |
34 | ||
35 | For example to compute the CRC of the input, and store it in the file | |
36 | @file{out.crc}: | |
37 | @example | |
d5837d7f | 38 | avconv -i INPUT -f crc out.crc |
a4effe43 SS |
39 | @end example |
40 | ||
41 | You can print the CRC to stdout with the command: | |
42 | @example | |
d5837d7f | 43 | avconv -i INPUT -f crc - |
a4effe43 SS |
44 | @end example |
45 | ||
d5837d7f | 46 | You can select the output format of each frame with @command{avconv} by |
a4effe43 SS |
47 | specifying the audio and video codec and format. For example to |
48 | compute the CRC of the input audio converted to PCM unsigned 8-bit | |
49 | and the input video converted to MPEG-2 video, use the command: | |
50 | @example | |
d5837d7f | 51 | avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc - |
a4effe43 SS |
52 | @end example |
53 | ||
4c989761 | 54 | See also the @ref{framecrc} muxer. |
77d4ed7a SS |
55 | |
56 | @anchor{framecrc} | |
57 | @section framecrc | |
58 | ||
59 | Per-frame CRC (Cyclic Redundancy Check) testing format. | |
60 | ||
61 | This muxer computes and prints the Adler-32 CRC for each decoded audio | |
62 | and video frame. By default audio frames are converted to signed | |
63 | 16-bit raw audio and video frames to raw video before computing the | |
64 | CRC. | |
65 | ||
66 | The output of the muxer consists of a line for each audio and video | |
67 | frame of the form: @var{stream_index}, @var{frame_dts}, | |
68 | @var{frame_size}, 0x@var{CRC}, where @var{CRC} is a hexadecimal | |
69 | number 0-padded to 8 digits containing the CRC of the decoded frame. | |
70 | ||
71 | For example to compute the CRC of each decoded frame in the input, and | |
72 | store it in the file @file{out.crc}: | |
73 | @example | |
d5837d7f | 74 | avconv -i INPUT -f framecrc out.crc |
77d4ed7a SS |
75 | @end example |
76 | ||
77 | You can print the CRC of each decoded frame to stdout with the command: | |
78 | @example | |
d5837d7f | 79 | avconv -i INPUT -f framecrc - |
77d4ed7a SS |
80 | @end example |
81 | ||
d5837d7f | 82 | You can select the output format of each frame with @command{avconv} by |
77d4ed7a SS |
83 | specifying the audio and video codec and format. For example, to |
84 | compute the CRC of each decoded input audio frame converted to PCM | |
85 | unsigned 8-bit and of each decoded input video frame converted to | |
86 | MPEG-2 video, use the command: | |
87 | @example | |
d5837d7f | 88 | avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc - |
77d4ed7a SS |
89 | @end example |
90 | ||
4c989761 | 91 | See also the @ref{crc} muxer. |
77d4ed7a | 92 | |
02e8f032 | 93 | @anchor{image2} |
e771d2e3 SS |
94 | @section image2 |
95 | ||
96 | Image file muxer. | |
97 | ||
0cad24ce | 98 | The image file muxer writes video frames to image files. |
e771d2e3 | 99 | |
0cad24ce SS |
100 | The output filenames are specified by a pattern, which can be used to |
101 | produce sequentially numbered series of files. | |
102 | The pattern may contain the string "%d" or "%0@var{N}d", this string | |
e771d2e3 | 103 | specifies the position of the characters representing a numbering in |
0cad24ce | 104 | the filenames. If the form "%0@var{N}d" is used, the string |
e771d2e3 SS |
105 | representing the number in each filename is 0-padded to @var{N} |
106 | digits. The literal character '%' can be specified in the pattern with | |
107 | the string "%%". | |
108 | ||
109 | If the pattern contains "%d" or "%0@var{N}d", the first filename of | |
110 | the file list specified will contain the number 1, all the following | |
111 | numbers will be sequential. | |
112 | ||
113 | The pattern may contain a suffix which is used to automatically | |
114 | determine the format of the image files to write. | |
115 | ||
116 | For example the pattern "img-%03d.bmp" will specify a sequence of | |
117 | filenames of the form @file{img-001.bmp}, @file{img-002.bmp}, ..., | |
118 | @file{img-010.bmp}, etc. | |
119 | The pattern "img%%-%d.jpg" will specify a sequence of filenames of the | |
120 | form @file{img%-1.jpg}, @file{img%-2.jpg}, ..., @file{img%-10.jpg}, | |
121 | etc. | |
122 | ||
d5837d7f | 123 | The following example shows how to use @command{avconv} for creating a |
e771d2e3 SS |
124 | sequence of files @file{img-001.jpeg}, @file{img-002.jpeg}, ..., |
125 | taking one image every second from the input video: | |
126 | @example | |
d5837d7f | 127 | avconv -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg' |
e771d2e3 SS |
128 | @end example |
129 | ||
d5837d7f | 130 | Note that with @command{avconv}, if the format is not specified with the |
e771d2e3 SS |
131 | @code{-f} option and the output filename specifies an image file |
132 | format, the image2 muxer is automatically selected, so the previous | |
133 | command can be written as: | |
134 | @example | |
d5837d7f | 135 | avconv -i in.avi -vsync 1 -r 1 'img-%03d.jpeg' |
e771d2e3 SS |
136 | @end example |
137 | ||
138 | Note also that the pattern must not necessarily contain "%d" or | |
139 | "%0@var{N}d", for example to create a single image file | |
140 | @file{img.jpeg} from the input video you can employ the command: | |
141 | @example | |
d5837d7f | 142 | avconv -i in.avi -f image2 -frames:v 1 img.jpeg |
e771d2e3 SS |
143 | @end example |
144 | ||
445996aa GC |
145 | @section mpegts |
146 | ||
147 | MPEG transport stream muxer. | |
148 | ||
149 | This muxer implements ISO 13818-1 and part of ETSI EN 300 468. | |
150 | ||
151 | The muxer options are: | |
152 | ||
153 | @table @option | |
154 | @item -mpegts_original_network_id @var{number} | |
155 | Set the original_network_id (default 0x0001). This is unique identifier | |
156 | of a network in DVB. Its main use is in the unique identification of a | |
157 | service through the path Original_Network_ID, Transport_Stream_ID. | |
158 | @item -mpegts_transport_stream_id @var{number} | |
159 | Set the transport_stream_id (default 0x0001). This identifies a | |
160 | transponder in DVB. | |
161 | @item -mpegts_service_id @var{number} | |
162 | Set the service_id (default 0x0001) also known as program in DVB. | |
163 | @item -mpegts_pmt_start_pid @var{number} | |
164 | Set the first PID for PMT (default 0x1000, max 0x1f00). | |
165 | @item -mpegts_start_pid @var{number} | |
166 | Set the first PID for data packets (default 0x0100, max 0x0f00). | |
167 | @end table | |
168 | ||
169 | The recognized metadata settings in mpegts muxer are @code{service_provider} | |
170 | and @code{service_name}. If they are not set the default for | |
6001dad6 | 171 | @code{service_provider} is "Libav" and the default for |
445996aa GC |
172 | @code{service_name} is "Service01". |
173 | ||
174 | @example | |
d5837d7f | 175 | avconv -i file.mpg -c copy \ |
445996aa GC |
176 | -mpegts_original_network_id 0x1122 \ |
177 | -mpegts_transport_stream_id 0x3344 \ | |
178 | -mpegts_service_id 0x5566 \ | |
179 | -mpegts_pmt_start_pid 0x1500 \ | |
180 | -mpegts_start_pid 0x150 \ | |
181 | -metadata service_provider="Some provider" \ | |
182 | -metadata service_name="Some Channel" \ | |
183 | -y out.ts | |
184 | @end example | |
185 | ||
f4acb837 SS |
186 | @section null |
187 | ||
188 | Null muxer. | |
189 | ||
190 | This muxer does not generate any output file, it is mainly useful for | |
191 | testing or benchmarking purposes. | |
192 | ||
d5837d7f | 193 | For example to benchmark decoding with @command{avconv} you can use the |
f4acb837 SS |
194 | command: |
195 | @example | |
d5837d7f | 196 | avconv -benchmark -i INPUT -f null out.null |
f4acb837 SS |
197 | @end example |
198 | ||
199 | Note that the above command does not read or write the @file{out.null} | |
d5837d7f | 200 | file, but specifying the output file is required by the @command{avconv} |
f4acb837 SS |
201 | syntax. |
202 | ||
203 | Alternatively you can write the command as: | |
204 | @example | |
d5837d7f | 205 | avconv -benchmark -i INPUT -f null - |
f4acb837 SS |
206 | @end example |
207 | ||
945dda41 AA |
208 | @section matroska |
209 | ||
210 | Matroska container muxer. | |
211 | ||
212 | This muxer implements the matroska and webm container specs. | |
213 | ||
214 | The recognized metadata settings in this muxer are: | |
215 | ||
216 | @table @option | |
217 | ||
218 | @item title=@var{title name} | |
219 | Name provided to a single track | |
220 | @end table | |
221 | ||
222 | @table @option | |
223 | ||
224 | @item language=@var{language name} | |
225 | Specifies the language of the track in the Matroska languages form | |
226 | @end table | |
227 | ||
228 | @table @option | |
229 | ||
230 | @item STEREO_MODE=@var{mode} | |
231 | Stereo 3D video layout of two views in a single video track | |
232 | @table @option | |
233 | @item mono | |
234 | video is not stereo | |
235 | @item left_right | |
236 | Both views are arranged side by side, Left-eye view is on the left | |
237 | @item bottom_top | |
238 | Both views are arranged in top-bottom orientation, Left-eye view is at bottom | |
239 | @item top_bottom | |
240 | Both views are arranged in top-bottom orientation, Left-eye view is on top | |
241 | @item checkerboard_rl | |
242 | Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first | |
243 | @item checkerboard_lr | |
244 | Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first | |
245 | @item row_interleaved_rl | |
246 | Each view is constituted by a row based interleaving, Right-eye view is first row | |
247 | @item row_interleaved_lr | |
248 | Each view is constituted by a row based interleaving, Left-eye view is first row | |
249 | @item col_interleaved_rl | |
250 | Both views are arranged in a column based interleaving manner, Right-eye view is first column | |
251 | @item col_interleaved_lr | |
252 | Both views are arranged in a column based interleaving manner, Left-eye view is first column | |
253 | @item anaglyph_cyan_red | |
254 | All frames are in anaglyph format viewable through red-cyan filters | |
255 | @item right_left | |
256 | Both views are arranged side by side, Right-eye view is on the left | |
257 | @item anaglyph_green_magenta | |
258 | All frames are in anaglyph format viewable through green-magenta filters | |
259 | @item block_lr | |
260 | Both eyes laced in one Block, Left-eye view is first | |
261 | @item block_rl | |
262 | Both eyes laced in one Block, Right-eye view is first | |
263 | @end table | |
264 | @end table | |
265 | ||
266 | For example a 3D WebM clip can be created using the following command line: | |
267 | @example | |
d5837d7f | 268 | avconv -i sample_left_right_clip.mpg -an -c:v libvpx -metadata STEREO_MODE=left_right -y stereo_clip.webm |
945dda41 AA |
269 | @end example |
270 | ||
02e8f032 LB |
271 | @section segment |
272 | ||
273 | Basic stream segmenter. | |
274 | ||
275 | The segmenter muxer outputs streams to a number of separate files of nearly | |
276 | fixed duration. Output filename pattern can be set in a fashion similar to | |
277 | @ref{image2}. | |
278 | ||
279 | Every segment starts with a video keyframe, if a video stream is present. | |
280 | The segment muxer works best with a single constant frame rate video. | |
281 | ||
282 | Optionally it can generate a flat list of the created segments, one segment | |
283 | per line. | |
284 | ||
285 | @table @option | |
286 | @item segment_format @var{format} | |
287 | Override the inner container format, by default it is guessed by the filename | |
288 | extension. | |
289 | @item segment_time @var{t} | |
290 | Set segment duration to @var{t} seconds. | |
291 | @item segment_list @var{name} | |
292 | Generate also a listfile named @var{name}. | |
293 | @item segment_list_size @var{size} | |
294 | Overwrite the listfile once it reaches @var{size} entries. | |
295 | @end table | |
296 | ||
297 | @example | |
298 | avconv -i in.mkv -c copy -map 0 -f segment -list out.list out%03d.nut | |
299 | @end example | |
300 | ||
301 | ||
85466e1e | 302 | @c man end MUXERS |