mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-08 05:28:40 +00:00
doc/ffserver: add "Detailed description" chapter
Also move FFM section up in the file, and rename it.
This commit is contained in:
parent
0bacc320c2
commit
889509d241
@ -42,6 +42,114 @@ For each feed you can have different output streams in various
|
|||||||
formats, each one specified by a @code{<Stream>} section in the
|
formats, each one specified by a @code{<Stream>} section in the
|
||||||
configuration file.
|
configuration file.
|
||||||
|
|
||||||
|
@chapter Detailed description
|
||||||
|
|
||||||
|
@command{ffserver} works by forwarding streams encoded by
|
||||||
|
@command{ffmpeg}, or pre-recorded streams which are read from disk.
|
||||||
|
|
||||||
|
Precisely, @command{ffserver} acts as an HTTP server, accepting POST
|
||||||
|
requests from @command{ffmpeg} to acquire the stream to publish, and
|
||||||
|
serving HTTP clients GET requests with the stream media content.
|
||||||
|
|
||||||
|
A feed is an @ref{FFM} stream created by @command{ffmpeg}, and sent to
|
||||||
|
a port where @command{ffserver} is listening.
|
||||||
|
|
||||||
|
Each feed is identified by a unique name, corresponding to the name
|
||||||
|
of the resource published on @command{ffserver}, and is configured by
|
||||||
|
a dedicated @code{Feed} section in the configuration file.
|
||||||
|
|
||||||
|
The feed publish URL is given by:
|
||||||
|
@example
|
||||||
|
http://@var{ffserver_ip_address}:@var{http_port}/@var{feed_name}
|
||||||
|
@end example
|
||||||
|
|
||||||
|
where @var{ffserver_ip_address} is the IP address of the machine where
|
||||||
|
@command{ffserver} is installed, @var{http_port} is the port number of
|
||||||
|
the HTTP server (configured through the @option{Port} option), and
|
||||||
|
@var{feed_name} is the name of the corresponding feed defined in the
|
||||||
|
configuration file.
|
||||||
|
|
||||||
|
Each feed is associated to a file which is stored on disk. This stored
|
||||||
|
file is used to allow to send pre-recorded data to a player as fast as
|
||||||
|
possible when new content is added in real-time to the stream.
|
||||||
|
|
||||||
|
A "live-stream" or "stream" is a resource published by
|
||||||
|
@command{ffserver}, and made accessible through the HTTP protocol to
|
||||||
|
clients.
|
||||||
|
|
||||||
|
A stream can be connected to a feed, or to a file. In the first case,
|
||||||
|
the published stream is forwarded from the corresponding feed
|
||||||
|
generated by a running instance of @command{ffmpeg}, in the second
|
||||||
|
case the stream is read from a pre-recorded file.
|
||||||
|
|
||||||
|
Each stream is identified by a unique name, corresponding to the name
|
||||||
|
of the resource served by @command{ffserver}, and is configured by
|
||||||
|
a dedicated @code{Stream} section in the configuration file.
|
||||||
|
|
||||||
|
The stream access URL is given by:
|
||||||
|
@example
|
||||||
|
http://@var{ffserver_ip_address}:@var{http_port}/@var{stream_name}[@var{options}]
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@var{stream_name} is the name of the corresponding stream defined in
|
||||||
|
the configuration file. @var{options} is a list of options specified
|
||||||
|
after the URL which affects how the stream is served by
|
||||||
|
@command{ffserver}.
|
||||||
|
|
||||||
|
In case the stream is associated to a feed, the encoding parameters
|
||||||
|
must be configured in the stream configuration. They are sent to
|
||||||
|
@command{ffmpeg} when setting up the encoding. This allows
|
||||||
|
@command{ffserver} to define the encoding parameters used by
|
||||||
|
the @command{ffmpeg} encoders.
|
||||||
|
|
||||||
|
The @command{ffmpeg} @option{override_ffserver} commandline option
|
||||||
|
allows to override the encoding parameters set by the server.
|
||||||
|
|
||||||
|
Multiple streams can be connected to the same feed.
|
||||||
|
|
||||||
|
For example, you can have a situation described by the following
|
||||||
|
graph:
|
||||||
|
@example
|
||||||
|
_________ __________
|
||||||
|
| | | |
|
||||||
|
ffmpeg 1 -----| feed 1 |-----| stream 1 |
|
||||||
|
\ |_________|\ |__________|
|
||||||
|
\ \
|
||||||
|
\ \ __________
|
||||||
|
\ \ | |
|
||||||
|
\ \| stream 2 |
|
||||||
|
\ |__________|
|
||||||
|
\
|
||||||
|
\ _________ __________
|
||||||
|
\ | | | |
|
||||||
|
\| feed 2 |-----| stream 3 |
|
||||||
|
|_________| |__________|
|
||||||
|
|
||||||
|
_________ __________
|
||||||
|
| | | |
|
||||||
|
ffmpeg 2 -----| feed 3 |-----| stream 4 |
|
||||||
|
|_________| |__________|
|
||||||
|
|
||||||
|
_________ __________
|
||||||
|
| | | |
|
||||||
|
| file 1 |-----| stream 5 |
|
||||||
|
|_________| |__________|
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@anchor{FFM}
|
||||||
|
@section FFM, FFM2 formats
|
||||||
|
|
||||||
|
FFM and FFM2 are formats used by ffserver. They allow storing a wide variety of
|
||||||
|
video and audio streams and encoding options, and can store a moving time segment
|
||||||
|
of an infinite movie or a whole movie.
|
||||||
|
|
||||||
|
FFM is version specific, and there is limited compatibility of FFM files
|
||||||
|
generated by one version of ffmpeg/ffserver and another version of
|
||||||
|
ffmpeg/ffserver. It may work but it is not guaranteed to work.
|
||||||
|
|
||||||
|
FFM2 is extensible while maintaining compatibility and should work between
|
||||||
|
differing versions of tools. FFM2 is the default.
|
||||||
|
|
||||||
@section Status stream
|
@section Status stream
|
||||||
|
|
||||||
@command{ffserver} supports an HTTP interface which exposes the
|
@command{ffserver} supports an HTTP interface which exposes the
|
||||||
@ -165,19 +273,6 @@ You use this by adding the ?date= to the end of the URL for the stream.
|
|||||||
For example: @samp{http://localhost:8080/test.asf?date=2002-07-26T23:05:00}.
|
For example: @samp{http://localhost:8080/test.asf?date=2002-07-26T23:05:00}.
|
||||||
@c man end
|
@c man end
|
||||||
|
|
||||||
@section What is FFM, FFM2
|
|
||||||
|
|
||||||
FFM and FFM2 are formats used by ffserver. They allow storing a wide variety of
|
|
||||||
video and audio streams and encoding options, and can store a moving time segment
|
|
||||||
of an infinite movie or a whole movie.
|
|
||||||
|
|
||||||
FFM is version specific, and there is limited compatibility of FFM files
|
|
||||||
generated by one version of ffmpeg/ffserver and another version of
|
|
||||||
ffmpeg/ffserver. It may work but it is not guaranteed to work.
|
|
||||||
|
|
||||||
FFM2 is extensible while maintaining compatibility and should work between
|
|
||||||
differing versions of tools. FFM2 is the default.
|
|
||||||
|
|
||||||
@chapter Options
|
@chapter Options
|
||||||
@c man begin OPTIONS
|
@c man begin OPTIONS
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user