yading@10
|
1 =head1 NAME
|
yading@10
|
2
|
yading@10
|
3 ffserver - ffserver video server
|
yading@10
|
4
|
yading@10
|
5 =head1 SYNOPSIS
|
yading@10
|
6
|
yading@10
|
7
|
yading@10
|
8 ffserver [I<options>]
|
yading@10
|
9
|
yading@10
|
10
|
yading@10
|
11 =head1 DESCRIPTION
|
yading@10
|
12
|
yading@10
|
13
|
yading@10
|
14 B<ffserver> is a streaming server for both audio and video. It
|
yading@10
|
15 supports several live feeds, streaming from files and time shifting on
|
yading@10
|
16 live feeds (you can seek to positions in the past on each live feed,
|
yading@10
|
17 provided you specify a big enough feed storage in
|
yading@10
|
18 F<ffserver.conf>).
|
yading@10
|
19
|
yading@10
|
20 B<ffserver> receives prerecorded files or FFM streams from some
|
yading@10
|
21 B<ffmpeg> instance as input, then streams them over
|
yading@10
|
22 RTP/RTSP/HTTP.
|
yading@10
|
23
|
yading@10
|
24 An B<ffserver> instance will listen on some port as specified
|
yading@10
|
25 in the configuration file. You can launch one or more instances of
|
yading@10
|
26 B<ffmpeg> and send one or more FFM streams to the port where
|
yading@10
|
27 ffserver is expecting to receive them. Alternately, you can make
|
yading@10
|
28 B<ffserver> launch such B<ffmpeg> instances at startup.
|
yading@10
|
29
|
yading@10
|
30 Input streams are called feeds, and each one is specified by a
|
yading@10
|
31 C<E<lt>FeedE<gt>> section in the configuration file.
|
yading@10
|
32
|
yading@10
|
33 For each feed you can have different output streams in various
|
yading@10
|
34 formats, each one specified by a C<E<lt>StreamE<gt>> section in the
|
yading@10
|
35 configuration file.
|
yading@10
|
36
|
yading@10
|
37
|
yading@10
|
38 =head2 Status stream
|
yading@10
|
39
|
yading@10
|
40
|
yading@10
|
41 ffserver supports an HTTP interface which exposes the current status
|
yading@10
|
42 of the server.
|
yading@10
|
43
|
yading@10
|
44 Simply point your browser to the address of the special status stream
|
yading@10
|
45 specified in the configuration file.
|
yading@10
|
46
|
yading@10
|
47 For example if you have:
|
yading@10
|
48
|
yading@10
|
49 <Stream status.html>
|
yading@10
|
50 Format status
|
yading@10
|
51
|
yading@10
|
52 # Only allow local people to get the status
|
yading@10
|
53 ACL allow localhost
|
yading@10
|
54 ACL allow 192.168.0.0 192.168.255.255
|
yading@10
|
55 </Stream>
|
yading@10
|
56
|
yading@10
|
57
|
yading@10
|
58 then the server will post a page with the status information when
|
yading@10
|
59 the special stream F<status.html> is requested.
|
yading@10
|
60
|
yading@10
|
61
|
yading@10
|
62 =head2 What can this do?
|
yading@10
|
63
|
yading@10
|
64
|
yading@10
|
65 When properly configured and running, you can capture video and audio in real
|
yading@10
|
66 time from a suitable capture card, and stream it out over the Internet to
|
yading@10
|
67 either Windows Media Player or RealAudio player (with some restrictions).
|
yading@10
|
68
|
yading@10
|
69 It can also stream from files, though that is currently broken. Very often, a
|
yading@10
|
70 web server can be used to serve up the files just as well.
|
yading@10
|
71
|
yading@10
|
72 It can stream prerecorded video from .ffm files, though it is somewhat tricky
|
yading@10
|
73 to make it work correctly.
|
yading@10
|
74
|
yading@10
|
75
|
yading@10
|
76 =head2 How do I make it work?
|
yading@10
|
77
|
yading@10
|
78
|
yading@10
|
79 First, build the kit. It *really* helps to have installed LAME first. Then when
|
yading@10
|
80 you run the ffserver ./configure, make sure that you have the
|
yading@10
|
81 C<--enable-libmp3lame> flag turned on.
|
yading@10
|
82
|
yading@10
|
83 LAME is important as it allows for streaming audio to Windows Media Player.
|
yading@10
|
84 Don't ask why the other audio types do not work.
|
yading@10
|
85
|
yading@10
|
86 As a simple test, just run the following two command lines where INPUTFILE
|
yading@10
|
87 is some file which you can decode with ffmpeg:
|
yading@10
|
88
|
yading@10
|
89
|
yading@10
|
90 ffserver -f doc/ffserver.conf &
|
yading@10
|
91 ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm
|
yading@10
|
92
|
yading@10
|
93
|
yading@10
|
94 At this point you should be able to go to your Windows machine and fire up
|
yading@10
|
95 Windows Media Player (WMP). Go to Open URL and enter
|
yading@10
|
96
|
yading@10
|
97
|
yading@10
|
98 http://<linuxbox>:8090/test.asf
|
yading@10
|
99
|
yading@10
|
100
|
yading@10
|
101 You should (after a short delay) see video and hear audio.
|
yading@10
|
102
|
yading@10
|
103 WARNING: trying to stream test1.mpg doesn't work with WMP as it tries to
|
yading@10
|
104 transfer the entire file before starting to play.
|
yading@10
|
105 The same is true of AVI files.
|
yading@10
|
106
|
yading@10
|
107
|
yading@10
|
108 =head2 What happens next?
|
yading@10
|
109
|
yading@10
|
110
|
yading@10
|
111 You should edit the ffserver.conf file to suit your needs (in terms of
|
yading@10
|
112 frame rates etc). Then install ffserver and ffmpeg, write a script to start
|
yading@10
|
113 them up, and off you go.
|
yading@10
|
114
|
yading@10
|
115
|
yading@10
|
116 =head2 Troubleshooting
|
yading@10
|
117
|
yading@10
|
118
|
yading@10
|
119
|
yading@10
|
120 =head3 I don't hear any audio, but video is fine.
|
yading@10
|
121
|
yading@10
|
122
|
yading@10
|
123 Maybe you didn't install LAME, or got your ./configure statement wrong. Check
|
yading@10
|
124 the ffmpeg output to see if a line referring to MP3 is present. If not, then
|
yading@10
|
125 your configuration was incorrect. If it is, then maybe your wiring is not
|
yading@10
|
126 set up correctly. Maybe the sound card is not getting data from the right
|
yading@10
|
127 input source. Maybe you have a really awful audio interface (like I do)
|
yading@10
|
128 that only captures in stereo and also requires that one channel be flipped.
|
yading@10
|
129 If you are one of these people, then export 'AUDIO_FLIP_LEFT=1' before
|
yading@10
|
130 starting ffmpeg.
|
yading@10
|
131
|
yading@10
|
132
|
yading@10
|
133 =head3 The audio and video lose sync after a while.
|
yading@10
|
134
|
yading@10
|
135
|
yading@10
|
136 Yes, they do.
|
yading@10
|
137
|
yading@10
|
138
|
yading@10
|
139 =head3 After a long while, the video update rate goes way down in WMP.
|
yading@10
|
140
|
yading@10
|
141
|
yading@10
|
142 Yes, it does. Who knows why?
|
yading@10
|
143
|
yading@10
|
144
|
yading@10
|
145 =head3 WMP 6.4 behaves differently to WMP 7.
|
yading@10
|
146
|
yading@10
|
147
|
yading@10
|
148 Yes, it does. Any thoughts on this would be gratefully received. These
|
yading@10
|
149 differences extend to embedding WMP into a web page. [There are two
|
yading@10
|
150 object IDs that you can use: The old one, which does not play well, and
|
yading@10
|
151 the new one, which does (both tested on the same system). However,
|
yading@10
|
152 I suspect that the new one is not available unless you have installed WMP 7].
|
yading@10
|
153
|
yading@10
|
154
|
yading@10
|
155 =head2 What else can it do?
|
yading@10
|
156
|
yading@10
|
157
|
yading@10
|
158 You can replay video from .ffm files that was recorded earlier.
|
yading@10
|
159 However, there are a number of caveats, including the fact that the
|
yading@10
|
160 ffserver parameters must match the original parameters used to record the
|
yading@10
|
161 file. If they do not, then ffserver deletes the file before recording into it.
|
yading@10
|
162 (Now that I write this, it seems broken).
|
yading@10
|
163
|
yading@10
|
164 You can fiddle with many of the codec choices and encoding parameters, and
|
yading@10
|
165 there are a bunch more parameters that you cannot control. Post a message
|
yading@10
|
166 to the mailing list if there are some 'must have' parameters. Look in
|
yading@10
|
167 ffserver.conf for a list of the currently available controls.
|
yading@10
|
168
|
yading@10
|
169 It will automatically generate the ASX or RAM files that are often used
|
yading@10
|
170 in browsers. These files are actually redirections to the underlying ASF
|
yading@10
|
171 or RM file. The reason for this is that the browser often fetches the
|
yading@10
|
172 entire file before starting up the external viewer. The redirection files
|
yading@10
|
173 are very small and can be transferred quickly. [The stream itself is
|
yading@10
|
174 often 'infinite' and thus the browser tries to download it and never
|
yading@10
|
175 finishes.]
|
yading@10
|
176
|
yading@10
|
177
|
yading@10
|
178 =head2 Tips
|
yading@10
|
179
|
yading@10
|
180
|
yading@10
|
181 * When you connect to a live stream, most players (WMP, RA, etc) want to
|
yading@10
|
182 buffer a certain number of seconds of material so that they can display the
|
yading@10
|
183 signal continuously. However, ffserver (by default) starts sending data
|
yading@10
|
184 in realtime. This means that there is a pause of a few seconds while the
|
yading@10
|
185 buffering is being done by the player. The good news is that this can be
|
yading@10
|
186 cured by adding a '?buffer=5' to the end of the URL. This means that the
|
yading@10
|
187 stream should start 5 seconds in the past -- and so the first 5 seconds
|
yading@10
|
188 of the stream are sent as fast as the network will allow. It will then
|
yading@10
|
189 slow down to real time. This noticeably improves the startup experience.
|
yading@10
|
190
|
yading@10
|
191 You can also add a 'Preroll 15' statement into the ffserver.conf that will
|
yading@10
|
192 add the 15 second prebuffering on all requests that do not otherwise
|
yading@10
|
193 specify a time. In addition, ffserver will skip frames until a key_frame
|
yading@10
|
194 is found. This further reduces the startup delay by not transferring data
|
yading@10
|
195 that will be discarded.
|
yading@10
|
196
|
yading@10
|
197 * You may want to adjust the MaxBandwidth in the ffserver.conf to limit
|
yading@10
|
198 the amount of bandwidth consumed by live streams.
|
yading@10
|
199
|
yading@10
|
200
|
yading@10
|
201 =head2 Why does the ?buffer / Preroll stop working after a time?
|
yading@10
|
202
|
yading@10
|
203
|
yading@10
|
204 It turns out that (on my machine at least) the number of frames successfully
|
yading@10
|
205 grabbed is marginally less than the number that ought to be grabbed. This
|
yading@10
|
206 means that the timestamp in the encoded data stream gets behind realtime.
|
yading@10
|
207 This means that if you say 'Preroll 10', then when the stream gets 10
|
yading@10
|
208 or more seconds behind, there is no Preroll left.
|
yading@10
|
209
|
yading@10
|
210 Fixing this requires a change in the internals of how timestamps are
|
yading@10
|
211 handled.
|
yading@10
|
212
|
yading@10
|
213
|
yading@10
|
214 =head2 Does the C<?date=> stuff work.
|
yading@10
|
215
|
yading@10
|
216
|
yading@10
|
217 Yes (subject to the limitation outlined above). Also note that whenever you
|
yading@10
|
218 start ffserver, it deletes the ffm file (if any parameters have changed),
|
yading@10
|
219 thus wiping out what you had recorded before.
|
yading@10
|
220
|
yading@10
|
221 The format of the C<?date=xxxxxx> is fairly flexible. You should use one
|
yading@10
|
222 of the following formats (the 'T' is literal):
|
yading@10
|
223
|
yading@10
|
224
|
yading@10
|
225 * YYYY-MM-DDTHH:MM:SS (localtime)
|
yading@10
|
226 * YYYY-MM-DDTHH:MM:SSZ (UTC)
|
yading@10
|
227
|
yading@10
|
228
|
yading@10
|
229 You can omit the YYYY-MM-DD, and then it refers to the current day. However
|
yading@10
|
230 note that B<?date=16:00:00> refers to 16:00 on the current day -- this
|
yading@10
|
231 may be in the future and so is unlikely to be useful.
|
yading@10
|
232
|
yading@10
|
233 You use this by adding the ?date= to the end of the URL for the stream.
|
yading@10
|
234 For example: B<http://localhost:8080/test.asf?date=2002-07-26T23:05:00>.
|
yading@10
|
235
|
yading@10
|
236
|
yading@10
|
237 =head2 What is FFM, FFM2
|
yading@10
|
238
|
yading@10
|
239
|
yading@10
|
240 FFM and FFM2 are formats used by ffserver. They allow storing a wide variety of
|
yading@10
|
241 video and audio streams and encoding options, and can store a moving time segment
|
yading@10
|
242 of an infinite movie or a whole movie.
|
yading@10
|
243
|
yading@10
|
244 FFM is version specific, and there is limited compatibility of FFM files
|
yading@10
|
245 generated by one version of ffmpeg/ffserver and another version of
|
yading@10
|
246 ffmpeg/ffserver. It may work but it is not guaranteed to work.
|
yading@10
|
247
|
yading@10
|
248 FFM2 is extensible while maintaining compatibility and should work between
|
yading@10
|
249 differing versions of tools. FFM2 is the default.
|
yading@10
|
250
|
yading@10
|
251
|
yading@10
|
252 =head1 OPTIONS
|
yading@10
|
253
|
yading@10
|
254
|
yading@10
|
255 All the numerical options, if not specified otherwise, accept a string
|
yading@10
|
256 representing a number as input, which may be followed by one of the SI
|
yading@10
|
257 unit prefixes, for example: 'K', 'M', or 'G'.
|
yading@10
|
258
|
yading@10
|
259 If 'i' is appended to the SI unit prefix, the complete prefix will be
|
yading@10
|
260 interpreted as a unit prefix for binary multiplies, which are based on
|
yading@10
|
261 powers of 1024 instead of powers of 1000. Appending 'B' to the SI unit
|
yading@10
|
262 prefix multiplies the value by 8. This allows using, for example:
|
yading@10
|
263 'KB', 'MiB', 'G' and 'B' as number suffixes.
|
yading@10
|
264
|
yading@10
|
265 Options which do not take arguments are boolean options, and set the
|
yading@10
|
266 corresponding value to true. They can be set to false by prefixing
|
yading@10
|
267 the option name with "no". For example using "-nofoo"
|
yading@10
|
268 will set the boolean option with name "foo" to false.
|
yading@10
|
269
|
yading@10
|
270
|
yading@10
|
271
|
yading@10
|
272 =head2 Stream specifiers
|
yading@10
|
273
|
yading@10
|
274 Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
|
yading@10
|
275 are used to precisely specify which stream(s) a given option belongs to.
|
yading@10
|
276
|
yading@10
|
277 A stream specifier is a string generally appended to the option name and
|
yading@10
|
278 separated from it by a colon. E.g. C<-codec:a:1 ac3> contains the
|
yading@10
|
279 C<a:1> stream specifier, which matches the second audio stream. Therefore, it
|
yading@10
|
280 would select the ac3 codec for the second audio stream.
|
yading@10
|
281
|
yading@10
|
282 A stream specifier can match several streams, so that the option is applied to all
|
yading@10
|
283 of them. E.g. the stream specifier in C<-b:a 128k> matches all audio
|
yading@10
|
284 streams.
|
yading@10
|
285
|
yading@10
|
286 An empty stream specifier matches all streams. For example, C<-codec copy>
|
yading@10
|
287 or C<-codec: copy> would copy all the streams without reencoding.
|
yading@10
|
288
|
yading@10
|
289 Possible forms of stream specifiers are:
|
yading@10
|
290
|
yading@10
|
291 =over 4
|
yading@10
|
292
|
yading@10
|
293
|
yading@10
|
294 =item I<stream_index>
|
yading@10
|
295
|
yading@10
|
296 Matches the stream with this index. E.g. C<-threads:1 4> would set the
|
yading@10
|
297 thread count for the second stream to 4.
|
yading@10
|
298
|
yading@10
|
299 =item I<stream_type>B<[:>I<stream_index>B<]>
|
yading@10
|
300
|
yading@10
|
301 I<stream_type> is one of following: 'v' for video, 'a' for audio, 's' for subtitle,
|
yading@10
|
302 'd' for data, and 't' for attachments. If I<stream_index> is given, then it matches
|
yading@10
|
303 stream number I<stream_index> of this type. Otherwise, it matches all
|
yading@10
|
304 streams of this type.
|
yading@10
|
305
|
yading@10
|
306 =item B<p:>I<program_id>B<[:>I<stream_index>B<]>
|
yading@10
|
307
|
yading@10
|
308 If I<stream_index> is given, then it matches the stream with number I<stream_index>
|
yading@10
|
309 in the program with the id I<program_id>. Otherwise, it matches all streams in the
|
yading@10
|
310 program.
|
yading@10
|
311
|
yading@10
|
312 =item B<#>I<stream_id>
|
yading@10
|
313
|
yading@10
|
314 Matches the stream by a format-specific ID.
|
yading@10
|
315
|
yading@10
|
316 =back
|
yading@10
|
317
|
yading@10
|
318
|
yading@10
|
319
|
yading@10
|
320 =head2 Generic options
|
yading@10
|
321
|
yading@10
|
322
|
yading@10
|
323 These options are shared amongst the ff* tools.
|
yading@10
|
324
|
yading@10
|
325
|
yading@10
|
326 =over 4
|
yading@10
|
327
|
yading@10
|
328
|
yading@10
|
329
|
yading@10
|
330 =item B<-L>
|
yading@10
|
331
|
yading@10
|
332 Show license.
|
yading@10
|
333
|
yading@10
|
334
|
yading@10
|
335 =item B<-h, -?, -help, --help [>I<arg>B<]>
|
yading@10
|
336
|
yading@10
|
337 Show help. An optional parameter may be specified to print help about a specific
|
yading@10
|
338 item.
|
yading@10
|
339
|
yading@10
|
340 Possible values of I<arg> are:
|
yading@10
|
341
|
yading@10
|
342 =over 4
|
yading@10
|
343
|
yading@10
|
344
|
yading@10
|
345 =item B<decoder=>I<decoder_name>
|
yading@10
|
346
|
yading@10
|
347 Print detailed information about the decoder named I<decoder_name>. Use the
|
yading@10
|
348 B<-decoders> option to get a list of all decoders.
|
yading@10
|
349
|
yading@10
|
350
|
yading@10
|
351 =item B<encoder=>I<encoder_name>
|
yading@10
|
352
|
yading@10
|
353 Print detailed information about the encoder named I<encoder_name>. Use the
|
yading@10
|
354 B<-encoders> option to get a list of all encoders.
|
yading@10
|
355
|
yading@10
|
356
|
yading@10
|
357 =item B<demuxer=>I<demuxer_name>
|
yading@10
|
358
|
yading@10
|
359 Print detailed information about the demuxer named I<demuxer_name>. Use the
|
yading@10
|
360 B<-formats> option to get a list of all demuxers and muxers.
|
yading@10
|
361
|
yading@10
|
362
|
yading@10
|
363 =item B<muxer=>I<muxer_name>
|
yading@10
|
364
|
yading@10
|
365 Print detailed information about the muxer named I<muxer_name>. Use the
|
yading@10
|
366 B<-formats> option to get a list of all muxers and demuxers.
|
yading@10
|
367
|
yading@10
|
368
|
yading@10
|
369 =item B<filter=>I<filter_name>
|
yading@10
|
370
|
yading@10
|
371 Print detailed information about the filter name I<filter_name>. Use the
|
yading@10
|
372 B<-filters> option to get a list of all filters.
|
yading@10
|
373
|
yading@10
|
374
|
yading@10
|
375 =back
|
yading@10
|
376
|
yading@10
|
377
|
yading@10
|
378
|
yading@10
|
379 =item B<-version>
|
yading@10
|
380
|
yading@10
|
381 Show version.
|
yading@10
|
382
|
yading@10
|
383
|
yading@10
|
384 =item B<-formats>
|
yading@10
|
385
|
yading@10
|
386 Show available formats.
|
yading@10
|
387
|
yading@10
|
388
|
yading@10
|
389 =item B<-codecs>
|
yading@10
|
390
|
yading@10
|
391 Show all codecs known to libavcodec.
|
yading@10
|
392
|
yading@10
|
393 Note that the term 'codec' is used throughout this documentation as a shortcut
|
yading@10
|
394 for what is more correctly called a media bitstream format.
|
yading@10
|
395
|
yading@10
|
396
|
yading@10
|
397 =item B<-decoders>
|
yading@10
|
398
|
yading@10
|
399 Show available decoders.
|
yading@10
|
400
|
yading@10
|
401
|
yading@10
|
402 =item B<-encoders>
|
yading@10
|
403
|
yading@10
|
404 Show all available encoders.
|
yading@10
|
405
|
yading@10
|
406
|
yading@10
|
407 =item B<-bsfs>
|
yading@10
|
408
|
yading@10
|
409 Show available bitstream filters.
|
yading@10
|
410
|
yading@10
|
411
|
yading@10
|
412 =item B<-protocols>
|
yading@10
|
413
|
yading@10
|
414 Show available protocols.
|
yading@10
|
415
|
yading@10
|
416
|
yading@10
|
417 =item B<-filters>
|
yading@10
|
418
|
yading@10
|
419 Show available libavfilter filters.
|
yading@10
|
420
|
yading@10
|
421
|
yading@10
|
422 =item B<-pix_fmts>
|
yading@10
|
423
|
yading@10
|
424 Show available pixel formats.
|
yading@10
|
425
|
yading@10
|
426
|
yading@10
|
427 =item B<-sample_fmts>
|
yading@10
|
428
|
yading@10
|
429 Show available sample formats.
|
yading@10
|
430
|
yading@10
|
431
|
yading@10
|
432 =item B<-layouts>
|
yading@10
|
433
|
yading@10
|
434 Show channel names and standard channel layouts.
|
yading@10
|
435
|
yading@10
|
436
|
yading@10
|
437 =item B<-loglevel [repeat+]>I<loglevel> B<| -v [repeat+]>I<loglevel>
|
yading@10
|
438
|
yading@10
|
439 Set the logging level used by the library.
|
yading@10
|
440 Adding "repeat+" indicates that repeated log output should not be compressed
|
yading@10
|
441 to the first line and the "Last message repeated n times" line will be
|
yading@10
|
442 omitted. "repeat" can also be used alone.
|
yading@10
|
443 If "repeat" is used alone, and with no prior loglevel set, the default
|
yading@10
|
444 loglevel will be used. If multiple loglevel parameters are given, using
|
yading@10
|
445 'repeat' will not change the loglevel.
|
yading@10
|
446 I<loglevel> is a number or a string containing one of the following values:
|
yading@10
|
447
|
yading@10
|
448 =over 4
|
yading@10
|
449
|
yading@10
|
450
|
yading@10
|
451 =item B<quiet>
|
yading@10
|
452
|
yading@10
|
453 Show nothing at all; be silent.
|
yading@10
|
454
|
yading@10
|
455 =item B<panic>
|
yading@10
|
456
|
yading@10
|
457 Only show fatal errors which could lead the process to crash, such as
|
yading@10
|
458 and assert failure. This is not currently used for anything.
|
yading@10
|
459
|
yading@10
|
460 =item B<fatal>
|
yading@10
|
461
|
yading@10
|
462 Only show fatal errors. These are errors after which the process absolutely
|
yading@10
|
463 cannot continue after.
|
yading@10
|
464
|
yading@10
|
465 =item B<error>
|
yading@10
|
466
|
yading@10
|
467 Show all errors, including ones which can be recovered from.
|
yading@10
|
468
|
yading@10
|
469 =item B<warning>
|
yading@10
|
470
|
yading@10
|
471 Show all warnings and errors. Any message related to possibly
|
yading@10
|
472 incorrect or unexpected events will be shown.
|
yading@10
|
473
|
yading@10
|
474 =item B<info>
|
yading@10
|
475
|
yading@10
|
476 Show informative messages during processing. This is in addition to
|
yading@10
|
477 warnings and errors. This is the default value.
|
yading@10
|
478
|
yading@10
|
479 =item B<verbose>
|
yading@10
|
480
|
yading@10
|
481 Same as C<info>, except more verbose.
|
yading@10
|
482
|
yading@10
|
483 =item B<debug>
|
yading@10
|
484
|
yading@10
|
485 Show everything, including debugging information.
|
yading@10
|
486
|
yading@10
|
487 =back
|
yading@10
|
488
|
yading@10
|
489
|
yading@10
|
490 By default the program logs to stderr, if coloring is supported by the
|
yading@10
|
491 terminal, colors are used to mark errors and warnings. Log coloring
|
yading@10
|
492 can be disabled setting the environment variable
|
yading@10
|
493 B<AV_LOG_FORCE_NOCOLOR> or B<NO_COLOR>, or can be forced setting
|
yading@10
|
494 the environment variable B<AV_LOG_FORCE_COLOR>.
|
yading@10
|
495 The use of the environment variable B<NO_COLOR> is deprecated and
|
yading@10
|
496 will be dropped in a following FFmpeg version.
|
yading@10
|
497
|
yading@10
|
498
|
yading@10
|
499 =item B<-report>
|
yading@10
|
500
|
yading@10
|
501 Dump full command line and console output to a file named
|
yading@10
|
502 C<I<program>-I<YYYYMMDD>-I<HHMMSS>.log> in the current
|
yading@10
|
503 directory.
|
yading@10
|
504 This file can be useful for bug reports.
|
yading@10
|
505 It also implies C<-loglevel verbose>.
|
yading@10
|
506
|
yading@10
|
507 Setting the environment variable C<FFREPORT> to any value has the
|
yading@10
|
508 same effect. If the value is a ':'-separated key=value sequence, these
|
yading@10
|
509 options will affect the report; options values must be escaped if they
|
yading@10
|
510 contain special characters or the options delimiter ':' (see the
|
yading@10
|
511 ``Quoting and escaping'' section in the ffmpeg-utils manual). The
|
yading@10
|
512 following option is recognized:
|
yading@10
|
513
|
yading@10
|
514 =over 4
|
yading@10
|
515
|
yading@10
|
516
|
yading@10
|
517 =item B<file>
|
yading@10
|
518
|
yading@10
|
519 set the file name to use for the report; C<%p> is expanded to the name
|
yading@10
|
520 of the program, C<%t> is expanded to a timestamp, C<%%> is expanded
|
yading@10
|
521 to a plain C<%>
|
yading@10
|
522
|
yading@10
|
523 =back
|
yading@10
|
524
|
yading@10
|
525
|
yading@10
|
526 Errors in parsing the environment variable are not fatal, and will not
|
yading@10
|
527 appear in the report.
|
yading@10
|
528
|
yading@10
|
529
|
yading@10
|
530 =item B<-cpuflags flags (>I<global>B<)>
|
yading@10
|
531
|
yading@10
|
532 Allows setting and clearing cpu flags. This option is intended
|
yading@10
|
533 for testing. Do not use it unless you know what you're doing.
|
yading@10
|
534
|
yading@10
|
535 ffmpeg -cpuflags -sse+mmx ...
|
yading@10
|
536 ffmpeg -cpuflags mmx ...
|
yading@10
|
537 ffmpeg -cpuflags 0 ...
|
yading@10
|
538
|
yading@10
|
539 Possible flags for this option are:
|
yading@10
|
540
|
yading@10
|
541 =over 4
|
yading@10
|
542
|
yading@10
|
543
|
yading@10
|
544 =item B<x86>
|
yading@10
|
545
|
yading@10
|
546
|
yading@10
|
547 =over 4
|
yading@10
|
548
|
yading@10
|
549
|
yading@10
|
550 =item B<mmx>
|
yading@10
|
551
|
yading@10
|
552
|
yading@10
|
553 =item B<mmxext>
|
yading@10
|
554
|
yading@10
|
555
|
yading@10
|
556 =item B<sse>
|
yading@10
|
557
|
yading@10
|
558
|
yading@10
|
559 =item B<sse2>
|
yading@10
|
560
|
yading@10
|
561
|
yading@10
|
562 =item B<sse2slow>
|
yading@10
|
563
|
yading@10
|
564
|
yading@10
|
565 =item B<sse3>
|
yading@10
|
566
|
yading@10
|
567
|
yading@10
|
568 =item B<sse3slow>
|
yading@10
|
569
|
yading@10
|
570
|
yading@10
|
571 =item B<ssse3>
|
yading@10
|
572
|
yading@10
|
573
|
yading@10
|
574 =item B<atom>
|
yading@10
|
575
|
yading@10
|
576
|
yading@10
|
577 =item B<sse4.1>
|
yading@10
|
578
|
yading@10
|
579
|
yading@10
|
580 =item B<sse4.2>
|
yading@10
|
581
|
yading@10
|
582
|
yading@10
|
583 =item B<avx>
|
yading@10
|
584
|
yading@10
|
585
|
yading@10
|
586 =item B<xop>
|
yading@10
|
587
|
yading@10
|
588
|
yading@10
|
589 =item B<fma4>
|
yading@10
|
590
|
yading@10
|
591
|
yading@10
|
592 =item B<3dnow>
|
yading@10
|
593
|
yading@10
|
594
|
yading@10
|
595 =item B<3dnowext>
|
yading@10
|
596
|
yading@10
|
597
|
yading@10
|
598 =item B<cmov>
|
yading@10
|
599
|
yading@10
|
600
|
yading@10
|
601 =back
|
yading@10
|
602
|
yading@10
|
603
|
yading@10
|
604 =item B<ARM>
|
yading@10
|
605
|
yading@10
|
606
|
yading@10
|
607 =over 4
|
yading@10
|
608
|
yading@10
|
609
|
yading@10
|
610 =item B<armv5te>
|
yading@10
|
611
|
yading@10
|
612
|
yading@10
|
613 =item B<armv6>
|
yading@10
|
614
|
yading@10
|
615
|
yading@10
|
616 =item B<armv6t2>
|
yading@10
|
617
|
yading@10
|
618
|
yading@10
|
619 =item B<vfp>
|
yading@10
|
620
|
yading@10
|
621
|
yading@10
|
622 =item B<vfpv3>
|
yading@10
|
623
|
yading@10
|
624
|
yading@10
|
625 =item B<neon>
|
yading@10
|
626
|
yading@10
|
627
|
yading@10
|
628 =back
|
yading@10
|
629
|
yading@10
|
630
|
yading@10
|
631 =item B<PowerPC>
|
yading@10
|
632
|
yading@10
|
633
|
yading@10
|
634 =over 4
|
yading@10
|
635
|
yading@10
|
636
|
yading@10
|
637 =item B<altivec>
|
yading@10
|
638
|
yading@10
|
639
|
yading@10
|
640 =back
|
yading@10
|
641
|
yading@10
|
642
|
yading@10
|
643 =item B<Specific Processors>
|
yading@10
|
644
|
yading@10
|
645
|
yading@10
|
646 =over 4
|
yading@10
|
647
|
yading@10
|
648
|
yading@10
|
649 =item B<pentium2>
|
yading@10
|
650
|
yading@10
|
651
|
yading@10
|
652 =item B<pentium3>
|
yading@10
|
653
|
yading@10
|
654
|
yading@10
|
655 =item B<pentium4>
|
yading@10
|
656
|
yading@10
|
657
|
yading@10
|
658 =item B<k6>
|
yading@10
|
659
|
yading@10
|
660
|
yading@10
|
661 =item B<k62>
|
yading@10
|
662
|
yading@10
|
663
|
yading@10
|
664 =item B<athlon>
|
yading@10
|
665
|
yading@10
|
666
|
yading@10
|
667 =item B<athlonxp>
|
yading@10
|
668
|
yading@10
|
669
|
yading@10
|
670 =item B<k8>
|
yading@10
|
671
|
yading@10
|
672
|
yading@10
|
673 =back
|
yading@10
|
674
|
yading@10
|
675
|
yading@10
|
676 =back
|
yading@10
|
677
|
yading@10
|
678
|
yading@10
|
679
|
yading@10
|
680 =item B<-opencl_options options (>I<global>B<)>
|
yading@10
|
681
|
yading@10
|
682 Set OpenCL environment options. This option is only available when
|
yading@10
|
683 FFmpeg has been compiled with C<--enable-opencl>.
|
yading@10
|
684
|
yading@10
|
685 I<options> must be a list of I<key>=I<value> option pairs
|
yading@10
|
686 separated by ':'. See the ``OpenCL Options'' section in the
|
yading@10
|
687 ffmpeg-utils manual for the list of supported options.
|
yading@10
|
688
|
yading@10
|
689 =back
|
yading@10
|
690
|
yading@10
|
691
|
yading@10
|
692
|
yading@10
|
693 =head2 AVOptions
|
yading@10
|
694
|
yading@10
|
695
|
yading@10
|
696 These options are provided directly by the libavformat, libavdevice and
|
yading@10
|
697 libavcodec libraries. To see the list of available AVOptions, use the
|
yading@10
|
698 B<-help> option. They are separated into two categories:
|
yading@10
|
699
|
yading@10
|
700 =over 4
|
yading@10
|
701
|
yading@10
|
702
|
yading@10
|
703 =item B<generic>
|
yading@10
|
704
|
yading@10
|
705 These options can be set for any container, codec or device. Generic options
|
yading@10
|
706 are listed under AVFormatContext options for containers/devices and under
|
yading@10
|
707 AVCodecContext options for codecs.
|
yading@10
|
708
|
yading@10
|
709 =item B<private>
|
yading@10
|
710
|
yading@10
|
711 These options are specific to the given container, device or codec. Private
|
yading@10
|
712 options are listed under their corresponding containers/devices/codecs.
|
yading@10
|
713
|
yading@10
|
714 =back
|
yading@10
|
715
|
yading@10
|
716
|
yading@10
|
717 For example to write an ID3v2.3 header instead of a default ID3v2.4 to
|
yading@10
|
718 an MP3 file, use the B<id3v2_version> private option of the MP3
|
yading@10
|
719 muxer:
|
yading@10
|
720
|
yading@10
|
721 ffmpeg -i input.flac -id3v2_version 3 out.mp3
|
yading@10
|
722
|
yading@10
|
723
|
yading@10
|
724 All codec AVOptions are obviously per-stream, so the chapter on stream
|
yading@10
|
725 specifiers applies to them
|
yading@10
|
726
|
yading@10
|
727 Note B<-nooption> syntax cannot be used for boolean AVOptions,
|
yading@10
|
728 use B<-option 0>/B<-option 1>.
|
yading@10
|
729
|
yading@10
|
730 Note2 old undocumented way of specifying per-stream AVOptions by prepending
|
yading@10
|
731 v/a/s to the options name is now obsolete and will be removed soon.
|
yading@10
|
732
|
yading@10
|
733
|
yading@10
|
734 =head2 Main options
|
yading@10
|
735
|
yading@10
|
736
|
yading@10
|
737
|
yading@10
|
738 =over 4
|
yading@10
|
739
|
yading@10
|
740
|
yading@10
|
741 =item B<-f> I<configfile>
|
yading@10
|
742
|
yading@10
|
743 Use F<configfile> instead of F</etc/ffserver.conf>.
|
yading@10
|
744
|
yading@10
|
745 =item B<-n>
|
yading@10
|
746
|
yading@10
|
747 Enable no-launch mode. This option disables all the Launch directives
|
yading@10
|
748 within the various E<lt>StreamE<gt> sections. Since ffserver will not launch
|
yading@10
|
749 any ffmpeg instances, you will have to launch them manually.
|
yading@10
|
750
|
yading@10
|
751 =item B<-d>
|
yading@10
|
752
|
yading@10
|
753 Enable debug mode. This option increases log verbosity, directs log
|
yading@10
|
754 messages to stdout.
|
yading@10
|
755
|
yading@10
|
756 =back
|
yading@10
|
757
|
yading@10
|
758
|
yading@10
|
759
|
yading@10
|
760
|
yading@10
|
761 =head1 SEE ALSO
|
yading@10
|
762
|
yading@10
|
763
|
yading@10
|
764
|
yading@10
|
765 ffserver-all(1),
|
yading@10
|
766 the F<doc/ffserver.conf> example, ffmpeg(1), ffplay(1), ffprobe(1),
|
yading@10
|
767 ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1),
|
yading@10
|
768 ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1),
|
yading@10
|
769 ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)
|
yading@10
|
770
|
yading@10
|
771
|
yading@10
|
772 =head1 AUTHORS
|
yading@10
|
773
|
yading@10
|
774
|
yading@10
|
775 The FFmpeg developers.
|
yading@10
|
776
|
yading@10
|
777 For details about the authorship, see the Git history of the project
|
yading@10
|
778 (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
yading@10
|
779 B<git log> in the FFmpeg source directory, or browsing the
|
yading@10
|
780 online repository at E<lt>B<http://source.ffmpeg.org>E<gt>.
|
yading@10
|
781
|
yading@10
|
782 Maintainers for the specific components are listed in the file
|
yading@10
|
783 F<MAINTAINERS> in the source code tree.
|
yading@10
|
784
|
yading@10
|
785
|
yading@10
|
786
|