forked from FFmpeg/FFmpeg
doc/muxers/fifo: review documentation
Apply consistency fixes, sort options, clarify example.
This commit is contained in:
parent
5828aaa2b5
commit
75dd083904
1 changed files with 80 additions and 69 deletions
149
doc/muxers.texi
149
doc/muxers.texi
|
@ -1421,104 +1421,115 @@ ffmpeg -i INPUT -s:v 720x480 -pix_fmt yuv411p -r 29.97 -ac 2 -ar 48000 -y out.dv
|
||||||
|
|
||||||
@anchor{fifo}
|
@anchor{fifo}
|
||||||
@section fifo
|
@section fifo
|
||||||
|
FIFO (First-In First-Out) muxer.
|
||||||
|
|
||||||
The fifo pseudo-muxer allows the separation of encoding and muxing by using
|
The @samp{fifo} pseudo-muxer allows the separation of encoding and
|
||||||
first-in-first-out queue and running the actual muxer in a separate thread. This
|
muxing by using a first-in-first-out queue and running the actual muxer
|
||||||
is especially useful in combination with the @ref{tee} muxer and can be used to
|
in a separate thread.
|
||||||
send data to several destinations with different reliability/writing speed/latency.
|
|
||||||
|
|
||||||
API users should be aware that callback functions (interrupt_callback,
|
This is especially useful in combination with
|
||||||
io_open and io_close) used within its AVFormatContext must be thread-safe.
|
the @ref{tee} muxer and can be used to send data to several
|
||||||
|
destinations with different reliability/writing speed/latency.
|
||||||
|
|
||||||
The behavior of the fifo muxer if the queue fills up or if the output fails is
|
The target muxer is either selected from the output name or specified
|
||||||
selectable,
|
through the @option{fifo_format} option.
|
||||||
|
|
||||||
|
The behavior of the @samp{fifo} muxer if the queue fills up or if the
|
||||||
|
output fails (e.g. if a packet cannot be written to the output) is
|
||||||
|
selectable:
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
Output can be transparently restarted with configurable delay between
|
||||||
|
retries based on real time or time of the processed stream.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
output can be transparently restarted with configurable delay between retries
|
Encoding can be blocked during temporary failure, or continue transparently
|
||||||
based on real time or time of the processed stream.
|
dropping packets in case the FIFO queue fills up.
|
||||||
|
|
||||||
@item
|
|
||||||
encoding can be blocked during temporary failure, or continue transparently
|
|
||||||
dropping packets in case fifo queue fills up.
|
|
||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
API users should be aware that callback functions
|
||||||
|
(@code{interrupt_callback}, @code{io_open} and @code{io_close}) used
|
||||||
|
within its @code{AVFormatContext} must be thread-safe.
|
||||||
|
|
||||||
|
@subsection Options
|
||||||
@table @option
|
@table @option
|
||||||
|
|
||||||
@item fifo_format
|
@item attempt_recovery @var{bool}
|
||||||
|
If failure occurs, attempt to recover the output. This is especially
|
||||||
|
useful when used with network output, since it makes it possible to
|
||||||
|
restart streaming transparently. By default this option is set to
|
||||||
|
@code{false}.
|
||||||
|
|
||||||
|
@item drop_pkts_on_overflow @var{bool}
|
||||||
|
If set to @code{true}, in case the fifo queue fills up, packets will
|
||||||
|
be dropped rather than blocking the encoder. This makes it possible to
|
||||||
|
continue streaming without delaying the input, at the cost of omitting
|
||||||
|
part of the stream. By default this option is set to @code{false}, so in
|
||||||
|
such cases the encoder will be blocked until the muxer processes some
|
||||||
|
of the packets and none of them is lost.
|
||||||
|
|
||||||
|
@item fifo_format @var{format_name}
|
||||||
Specify the format name. Useful if it cannot be guessed from the
|
Specify the format name. Useful if it cannot be guessed from the
|
||||||
output name suffix.
|
output name suffix.
|
||||||
|
|
||||||
@item queue_size
|
@item format_opts @var{options}
|
||||||
Specify size of the queue (number of packets). Default value is 60.
|
Specify format options for the underlying muxer. Muxer options can be
|
||||||
|
specified as a list of @var{key}=@var{value} pairs separated by ':'.
|
||||||
|
|
||||||
@item format_opts
|
@item max_recovery_attempts @var{count}
|
||||||
Specify format options for the underlying muxer. Muxer options can be specified
|
Set maximum number of successive unsuccessful recovery attempts after
|
||||||
as a list of @var{key}=@var{value} pairs separated by ':'.
|
which the output fails permanently. By default this option is set to
|
||||||
|
@code{0} (unlimited).
|
||||||
|
|
||||||
@item drop_pkts_on_overflow @var{bool}
|
@item queue_size @var{size}
|
||||||
If set to 1 (true), in case the fifo queue fills up, packets will be dropped
|
Specify size of the queue as a number of packets. Default value is
|
||||||
rather than blocking the encoder. This makes it possible to continue streaming without
|
@code{60}.
|
||||||
delaying the input, at the cost of omitting part of the stream. By default
|
|
||||||
this option is set to 0 (false), so in such cases the encoder will be blocked
|
|
||||||
until the muxer processes some of the packets and none of them is lost.
|
|
||||||
|
|
||||||
@item attempt_recovery @var{bool}
|
|
||||||
If failure occurs, attempt to recover the output. This is especially useful
|
|
||||||
when used with network output, since it makes it possible to restart streaming transparently.
|
|
||||||
By default this option is set to 0 (false).
|
|
||||||
|
|
||||||
@item max_recovery_attempts
|
|
||||||
Sets maximum number of successive unsuccessful recovery attempts after which
|
|
||||||
the output fails permanently. By default this option is set to 0 (unlimited).
|
|
||||||
|
|
||||||
@item recovery_wait_time @var{duration}
|
|
||||||
Waiting time before the next recovery attempt after previous unsuccessful
|
|
||||||
recovery attempt. Default value is 5 seconds.
|
|
||||||
|
|
||||||
@item recovery_wait_streamtime @var{bool}
|
|
||||||
If set to 0 (false), the real time is used when waiting for the recovery
|
|
||||||
attempt (i.e. the recovery will be attempted after at least
|
|
||||||
recovery_wait_time seconds).
|
|
||||||
If set to 1 (true), the time of the processed stream is taken into account
|
|
||||||
instead (i.e. the recovery will be attempted after at least @var{recovery_wait_time}
|
|
||||||
seconds of the stream is omitted).
|
|
||||||
By default, this option is set to 0 (false).
|
|
||||||
|
|
||||||
@item recover_any_error @var{bool}
|
@item recover_any_error @var{bool}
|
||||||
If set to 1 (true), recovery will be attempted regardless of type of the error
|
If set to @code{true}, recovery will be attempted regardless of type
|
||||||
causing the failure. By default this option is set to 0 (false) and in case of
|
of the error causing the failure. By default this option is set to
|
||||||
certain (usually permanent) errors the recovery is not attempted even when
|
@code{false} and in case of certain (usually permanent) errors the
|
||||||
@var{attempt_recovery} is set to 1.
|
recovery is not attempted even when the @option{attempt_recovery}
|
||||||
|
option is set to @code{true}.
|
||||||
|
|
||||||
|
@item recovery_wait_streamtime @var{bool}
|
||||||
|
If set to @code{false}, the real time is used when waiting for the
|
||||||
|
recovery attempt (i.e. the recovery will be attempted after the time
|
||||||
|
specified by the @option{recovery_wait_time} option).
|
||||||
|
|
||||||
|
If set to @code{true}, the time of the processed stream is taken into
|
||||||
|
account instead (i.e. the recovery will be attempted after discarding
|
||||||
|
the packets corresponding to the @option{recovery_wait_time} option).
|
||||||
|
|
||||||
|
By default this option is set to @code{false}.
|
||||||
|
|
||||||
|
@item recovery_wait_time @var{duration}
|
||||||
|
Specify waiting time in seconds before the next recovery attempt after
|
||||||
|
previous unsuccessful recovery attempt. Default value is @code{5}.
|
||||||
|
|
||||||
@item restart_with_keyframe @var{bool}
|
@item restart_with_keyframe @var{bool}
|
||||||
Specify whether to wait for the keyframe after recovering from
|
Specify whether to wait for the keyframe after recovering from
|
||||||
queue overflow or failure. This option is set to 0 (false) by default.
|
queue overflow or failure. This option is set to @code{false} by default.
|
||||||
|
|
||||||
@item timeshift @var{duration}
|
@item timeshift @var{duration}
|
||||||
Buffer the specified amount of packets and delay writing the output. Note that
|
Buffer the specified amount of packets and delay writing the
|
||||||
@var{queue_size} must be big enough to store the packets for timeshift. At the
|
output. Note that the value of the @option{queue_size} option must be
|
||||||
end of the input the fifo buffer is flushed at realtime speed.
|
big enough to store the packets for timeshift. At the end of the input
|
||||||
|
the fifo buffer is flushed at realtime speed.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@subsection Examples
|
@subsection Example
|
||||||
|
|
||||||
@itemize
|
Use @command{ffmpeg} to stream to an RTMP server, continue processing
|
||||||
|
the stream at real-time rate even in case of temporary failure
|
||||||
@item
|
(network outage) and attempt to recover streaming every second
|
||||||
Stream something to rtmp server, continue processing the stream at real-time
|
indefinitely:
|
||||||
rate even in case of temporary failure (network outage) and attempt to recover
|
|
||||||
streaming every second indefinitely.
|
|
||||||
@example
|
@example
|
||||||
ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv -map 0:v -map 0:a
|
ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv \
|
||||||
-drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 rtmp://example.com/live/stream_name
|
-drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 \
|
||||||
|
-map 0:v -map 0:a rtmp://example.com/live/stream_name
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@section flv
|
@section flv
|
||||||
|
|
||||||
Adobe Flash Video Format muxer.
|
Adobe Flash Video Format muxer.
|
||||||
|
|
Loading…
Add table
Reference in a new issue