diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2013-11-29 19:36:15 +0400 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2013-11-30 17:35:33 +0400 |
commit | 889509d2411606353420bf3d3f518215e434b242 (patch) | |
tree | fc47b1ffa35a9f978d96e0f0e3359836b916a039 /doc/ffserver.texi | |
parent | 0bacc320c2922967ae18fe751a783ce25e7cac4e (diff) |
doc/ffserver: add "Detailed description" chapter
Also move FFM section up in the file, and rename it.
Diffstat (limited to 'doc/ffserver.texi')
-rw-r--r-- | doc/ffserver.texi | 121 |
1 files changed, 108 insertions, 13 deletions
diff --git a/doc/ffserver.texi b/doc/ffserver.texi index edd58b7aa6..d14bb4a891 100644 --- a/doc/ffserver.texi +++ b/doc/ffserver.texi @@ -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 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 @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}. @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 @c man begin OPTIONS |