Rename ffserver to avserver.

This commit is contained in:
Anton Khirnov 2011-07-26 21:56:56 +02:00
parent 9e12f0bf5f
commit 4d58e4cb4c
16 changed files with 102 additions and 102 deletions

2
.gitignore vendored
View File

@ -14,7 +14,7 @@ doxy
ffmpeg ffmpeg
avplay avplay
avprobe avprobe
ffserver avserver
libavcodec/*_tablegen libavcodec/*_tablegen
libavcodec/*_tables.c libavcodec/*_tables.c
libavcodec/*_tables.h libavcodec/*_tables.h

View File

@ -5,7 +5,7 @@ releases are sorted from youngest to oldest.
version <next>: version <next>:
- BWF muxer - BWF muxer
- Flash Screen Video 2 decoder - Flash Screen Video 2 decoder
- ffplay/ffprobe renamed to avplay/avprobe - ffplay/ffprobe/ffserver renamed to avplay/avprobe/avserver
version 0.7: version 0.7:

View File

@ -55,7 +55,7 @@ COMPILE_S = $(call COMPILE,AS)
PROGS-$(CONFIG_FFMPEG) += ffmpeg PROGS-$(CONFIG_FFMPEG) += ffmpeg
PROGS-$(CONFIG_AVPLAY) += avplay PROGS-$(CONFIG_AVPLAY) += avplay
PROGS-$(CONFIG_AVPROBE) += avprobe PROGS-$(CONFIG_AVPROBE) += avprobe
PROGS-$(CONFIG_FFSERVER) += ffserver PROGS-$(CONFIG_AVSERVER) += avserver
PROGS := $(PROGS-yes:%=%$(EXESUF)) PROGS := $(PROGS-yes:%=%$(EXESUF))
OBJS = $(PROGS-yes:%=%.o) cmdutils.o OBJS = $(PROGS-yes:%=%.o) cmdutils.o
@ -64,7 +64,7 @@ HOSTPROGS := $(TESTTOOLS:%=tests/%)
TOOLS = qt-faststart trasher TOOLS = qt-faststart trasher
TOOLS-$(CONFIG_ZLIB) += cws2fws TOOLS-$(CONFIG_ZLIB) += cws2fws
BASENAMES = ffmpeg avplay avprobe ffserver BASENAMES = ffmpeg avplay avprobe avserver
ALLPROGS = $(BASENAMES:%=%$(EXESUF)) ALLPROGS = $(BASENAMES:%=%$(EXESUF))
ALLMANPAGES = $(BASENAMES:%=%.1) ALLMANPAGES = $(BASENAMES:%=%.1)
@ -118,7 +118,7 @@ $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
avplay.o: CFLAGS += $(SDL_CFLAGS) avplay.o: CFLAGS += $(SDL_CFLAGS)
avplay$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS) avplay$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS)
ffserver$(EXESUF): LDFLAGS += $(FFSERVERLDFLAGS) avserver$(EXESUF): LDFLAGS += $(AVSERVERLDFLAGS)
$(PROGS): %$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS) $(PROGS): %$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS)
$(LD) $(LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS) $(LD) $(LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS)

View File

@ -59,7 +59,7 @@
#include "cmdutils.h" #include "cmdutils.h"
const char program_name[] = "ffserver"; const char program_name[] = "avserver";
const int program_birth_year = 2000; const int program_birth_year = 2000;
static const OptionDef options[]; static const OptionDef options[];
@ -200,7 +200,7 @@ typedef struct IPAddressACL {
struct in_addr last; struct in_addr last;
} IPAddressACL; } IPAddressACL;
/* description of each stream of the ffserver.conf file */ /* description of each stream of the avserver.conf file */
typedef struct FFStream { typedef struct FFStream {
enum StreamType stream_type; enum StreamType stream_type;
char filename[1024]; /* stream filename */ char filename[1024]; /* stream filename */
@ -299,10 +299,10 @@ static int rtp_new_av_stream(HTTPContext *c,
static const char *my_program_name; static const char *my_program_name;
static const char *my_program_dir; static const char *my_program_dir;
static const char *config_filename = "/etc/ffserver.conf"; static const char *config_filename = "/etc/avserver.conf";
static int ffserver_debug; static int avserver_debug;
static int ffserver_daemon; static int avserver_daemon;
static int no_launch; static int no_launch;
static int need_to_start_children; static int need_to_start_children;
@ -320,7 +320,7 @@ static AVLFG random_state;
static FILE *logfile = NULL; static FILE *logfile = NULL;
/* FIXME: make ffserver work with IPv6 */ /* FIXME: make avserver work with IPv6 */
/* resolve host with also IP address parsing */ /* resolve host with also IP address parsing */
static int resolve_host(struct in_addr *sin_addr, const char *hostname) static int resolve_host(struct in_addr *sin_addr, const char *hostname)
{ {
@ -480,7 +480,7 @@ static void start_children(FFStream *feed)
for (i = 3; i < 256; i++) for (i = 3; i < 256; i++)
close(i); close(i);
if (!ffserver_debug) { if (!avserver_debug) {
i = open("/dev/null", O_RDWR); i = open("/dev/null", O_RDWR);
if (i != -1) { if (i != -1) {
dup2(i, 0); dup2(i, 0);
@ -620,7 +620,7 @@ static int http_server(void)
return -1; return -1;
} }
http_log("FFserver started.\n"); http_log("AVserver started.\n");
start_children(first_feed); start_children(first_feed);
@ -664,7 +664,7 @@ static int http_server(void)
poll_entry->events = POLLOUT; poll_entry->events = POLLOUT;
poll_entry++; poll_entry++;
} else { } else {
/* when ffserver is doing the timing, we work by /* when avserver is doing the timing, we work by
looking at which packet need to be sent every looking at which packet need to be sent every
10 ms */ 10 ms */
delay1 = 10; /* one tick wait XXX: 10 ms assumed */ delay1 = 10; /* one tick wait XXX: 10 ms assumed */
@ -1480,7 +1480,7 @@ static int http_parse_request(HTTPContext *c)
av_strlcpy(c->protocol, protocol, sizeof(c->protocol)); av_strlcpy(c->protocol, protocol, sizeof(c->protocol));
if (ffserver_debug) if (avserver_debug)
http_log("%s - - New connection: %s %s\n", inet_ntoa(c->from_addr.sin_addr), cmd, url); http_log("%s - - New connection: %s %s\n", inet_ntoa(c->from_addr.sin_addr), cmd, url);
/* find the filename and the optional info string in the request */ /* find the filename and the optional info string in the request */
@ -1643,7 +1643,7 @@ static int http_parse_request(HTTPContext *c)
"Content-type: video/x-ms-asf\r\n" "Content-type: video/x-ms-asf\r\n"
"\r\n" "\r\n"
"<ASX Version=\"3\">\r\n" "<ASX Version=\"3\">\r\n"
//"<!-- Autogenerated by ffserver -->\r\n" //"<!-- Autogenerated by avserver -->\r\n"
"<ENTRY><REF HREF=\"http://%s/%s%s\"/></ENTRY>\r\n" "<ENTRY><REF HREF=\"http://%s/%s%s\"/></ENTRY>\r\n"
"</ASX>\r\n", hostbuf, filename, info); "</ASX>\r\n", hostbuf, filename, info);
break; break;
@ -1652,7 +1652,7 @@ static int http_parse_request(HTTPContext *c)
"HTTP/1.0 200 RAM Follows\r\n" "HTTP/1.0 200 RAM Follows\r\n"
"Content-type: audio/x-pn-realaudio\r\n" "Content-type: audio/x-pn-realaudio\r\n"
"\r\n" "\r\n"
"# Autogenerated by ffserver\r\n" "# Autogenerated by avserver\r\n"
"http://%s/%s%s\r\n", hostbuf, filename, info); "http://%s/%s%s\r\n", hostbuf, filename, info);
break; break;
case REDIR_ASF: case REDIR_ASF:
@ -3458,7 +3458,7 @@ static int rtp_new_av_stream(HTTPContext *c,
} }
/********************************************************************/ /********************************************************************/
/* ffserver initialization */ /* avserver initialization */
static AVStream *add_av_stream1(FFStream *stream, AVCodecContext *codec, int copy) static AVStream *add_av_stream1(FFStream *stream, AVCodecContext *codec, int copy)
{ {
@ -3914,10 +3914,10 @@ static void load_module(const char *filename)
return; return;
} }
init_func = dlsym(dll, "ffserver_module_init"); init_func = dlsym(dll, "avserver_module_init");
if (!init_func) { if (!init_func) {
fprintf(stderr, fprintf(stderr,
"%s: init function 'ffserver_module_init()' not found\n", "%s: init function 'avserver_module_init()' not found\n",
filename); filename);
dlclose(dll); dlclose(dll);
} }
@ -3926,7 +3926,7 @@ static void load_module(const char *filename)
} }
#endif #endif
static int ffserver_opt_default(const char *opt, const char *arg, static int avserver_opt_default(const char *opt, const char *arg,
AVCodecContext *avctx, int type) AVCodecContext *avctx, int type)
{ {
int ret = 0; int ret = 0;
@ -3936,7 +3936,7 @@ static int ffserver_opt_default(const char *opt, const char *arg,
return ret; return ret;
} }
static int ffserver_opt_preset(const char *arg, static int avserver_opt_preset(const char *arg,
AVCodecContext *avctx, int type, AVCodecContext *avctx, int type,
enum CodecID *audio_id, enum CodecID *video_id) enum CodecID *audio_id, enum CodecID *video_id)
{ {
@ -3967,7 +3967,7 @@ static int ffserver_opt_preset(const char *arg,
*video_id = opt_video_codec(tmp2); *video_id = opt_video_codec(tmp2);
}else if(!strcmp(tmp, "scodec")){ }else if(!strcmp(tmp, "scodec")){
/* opt_subtitle_codec(tmp2); */ /* opt_subtitle_codec(tmp2); */
}else if(ffserver_opt_default(tmp, tmp2, avctx, type) < 0){ }else if(avserver_opt_default(tmp, tmp2, avctx, type) < 0){
fprintf(stderr, "%s: Invalid option or argument: '%s', parsed as '%s' = '%s'\n", filename, line, tmp, tmp2); fprintf(stderr, "%s: Invalid option or argument: '%s', parsed as '%s' = '%s'\n", filename, line, tmp, tmp2);
ret = 1; ret = 1;
break; break;
@ -3979,7 +3979,7 @@ static int ffserver_opt_preset(const char *arg,
return ret; return ret;
} }
static AVOutputFormat *ffserver_guess_format(const char *short_name, const char *filename, static AVOutputFormat *avserver_guess_format(const char *short_name, const char *filename,
const char *mime_type) const char *mime_type)
{ {
AVOutputFormat *fmt = av_guess_format(short_name, filename, mime_type); AVOutputFormat *fmt = av_guess_format(short_name, filename, mime_type);
@ -4066,7 +4066,7 @@ static int parse_ffconfig(const char *filename)
ERROR("%s:%d: Invalid host/IP address: %s\n", arg); ERROR("%s:%d: Invalid host/IP address: %s\n", arg);
} }
} else if (!strcasecmp(cmd, "NoDaemon")) { } else if (!strcasecmp(cmd, "NoDaemon")) {
ffserver_daemon = 0; avserver_daemon = 0;
} else if (!strcasecmp(cmd, "RTSPPort")) { } else if (!strcasecmp(cmd, "RTSPPort")) {
get_arg(arg, sizeof(arg), &p); get_arg(arg, sizeof(arg), &p);
val = atoi(arg); val = atoi(arg);
@ -4103,7 +4103,7 @@ static int parse_ffconfig(const char *filename)
} else } else
max_bandwidth = llval; max_bandwidth = llval;
} else if (!strcasecmp(cmd, "CustomLog")) { } else if (!strcasecmp(cmd, "CustomLog")) {
if (!ffserver_debug) if (!avserver_debug)
get_arg(logfilename, sizeof(logfilename), &p); get_arg(logfilename, sizeof(logfilename), &p);
} else if (!strcasecmp(cmd, "<Feed")) { } else if (!strcasecmp(cmd, "<Feed")) {
/*********************************************/ /*********************************************/
@ -4227,7 +4227,7 @@ static int parse_ffconfig(const char *filename)
} }
} }
stream->fmt = ffserver_guess_format(NULL, stream->filename, NULL); stream->fmt = avserver_guess_format(NULL, stream->filename, NULL);
avcodec_get_context_defaults2(&video_enc, AVMEDIA_TYPE_VIDEO); avcodec_get_context_defaults2(&video_enc, AVMEDIA_TYPE_VIDEO);
avcodec_get_context_defaults2(&audio_enc, AVMEDIA_TYPE_AUDIO); avcodec_get_context_defaults2(&audio_enc, AVMEDIA_TYPE_AUDIO);
audio_id = CODEC_ID_NONE; audio_id = CODEC_ID_NONE;
@ -4267,7 +4267,7 @@ static int parse_ffconfig(const char *filename)
/* jpeg cannot be used here, so use single frame jpeg */ /* jpeg cannot be used here, so use single frame jpeg */
if (!strcmp(arg, "jpeg")) if (!strcmp(arg, "jpeg"))
strcpy(arg, "mjpeg"); strcpy(arg, "mjpeg");
stream->fmt = ffserver_guess_format(arg, NULL, NULL); stream->fmt = avserver_guess_format(arg, NULL, NULL);
if (!stream->fmt) { if (!stream->fmt) {
ERROR("Unknown Format: %s\n", arg); ERROR("Unknown Format: %s\n", arg);
} }
@ -4430,7 +4430,7 @@ static int parse_ffconfig(const char *filename)
avctx = &audio_enc; avctx = &audio_enc;
type = AV_OPT_FLAG_AUDIO_PARAM; type = AV_OPT_FLAG_AUDIO_PARAM;
} }
if (ffserver_opt_default(arg, arg2, avctx, type|AV_OPT_FLAG_ENCODING_PARAM)) { if (avserver_opt_default(arg, arg2, avctx, type|AV_OPT_FLAG_ENCODING_PARAM)) {
ERROR("AVOption error: %s %s\n", arg, arg2); ERROR("AVOption error: %s %s\n", arg, arg2);
} }
} else if (!strcasecmp(cmd, "AVPresetVideo") || } else if (!strcasecmp(cmd, "AVPresetVideo") ||
@ -4447,7 +4447,7 @@ static int parse_ffconfig(const char *filename)
audio_enc.codec_id = audio_id; audio_enc.codec_id = audio_id;
type = AV_OPT_FLAG_AUDIO_PARAM; type = AV_OPT_FLAG_AUDIO_PARAM;
} }
if (ffserver_opt_preset(arg, avctx, type|AV_OPT_FLAG_ENCODING_PARAM, &audio_id, &video_id)) { if (avserver_opt_preset(arg, avctx, type|AV_OPT_FLAG_ENCODING_PARAM, &audio_id, &video_id)) {
ERROR("AVPreset error: %s\n", arg); ERROR("AVPreset error: %s\n", arg);
} }
} else if (!strcasecmp(cmd, "VideoTag")) { } else if (!strcasecmp(cmd, "VideoTag")) {
@ -4638,14 +4638,14 @@ static void handle_child_exit(int sig)
static void opt_debug(void) static void opt_debug(void)
{ {
ffserver_debug = 1; avserver_debug = 1;
ffserver_daemon = 0; avserver_daemon = 0;
logfilename[0] = '-'; logfilename[0] = '-';
} }
static void show_help(void) static void show_help(void)
{ {
printf("usage: ffserver [options]\n" printf("usage: avserver [options]\n"
"Hyper fast multi format Audio/Video streaming server\n"); "Hyper fast multi format Audio/Video streaming server\n");
printf("\n"); printf("\n");
show_help_options(options, "Main options:\n", 0, 0); show_help_options(options, "Main options:\n", 0, 0);
@ -4655,7 +4655,7 @@ static const OptionDef options[] = {
#include "cmdutils_common_opts.h" #include "cmdutils_common_opts.h"
{ "n", OPT_BOOL, {(void *)&no_launch }, "enable no-launch mode" }, { "n", OPT_BOOL, {(void *)&no_launch }, "enable no-launch mode" },
{ "d", 0, {(void*)opt_debug}, "enable debug mode" }, { "d", 0, {(void*)opt_debug}, "enable debug mode" },
{ "f", HAS_ARG | OPT_STRING, {(void*)&config_filename }, "use configfile instead of /etc/ffserver.conf", "configfile" }, { "f", HAS_ARG | OPT_STRING, {(void*)&config_filename }, "use configfile instead of /etc/avserver.conf", "configfile" },
{ NULL }, { NULL },
}; };
@ -4669,7 +4669,7 @@ int main(int argc, char **argv)
my_program_name = argv[0]; my_program_name = argv[0];
my_program_dir = getcwd(0, 0); my_program_dir = getcwd(0, 0);
ffserver_daemon = 1; avserver_daemon = 1;
parse_options(argc, argv, options, NULL); parse_options(argc, argv, options, NULL);
@ -4703,7 +4703,7 @@ int main(int argc, char **argv)
compute_bandwidth(); compute_bandwidth();
/* put the process in background and detach it from its TTY */ /* put the process in background and detach it from its TTY */
if (ffserver_daemon) { if (avserver_daemon) {
int pid; int pid;
pid = fork(); pid = fork();
@ -4730,7 +4730,7 @@ int main(int argc, char **argv)
/* signal init */ /* signal init */
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
if (ffserver_daemon) if (avserver_daemon)
chdir("/"); chdir("/");
if (http_server() < 0) { if (http_server() < 0) {

20
configure vendored
View File

@ -83,7 +83,7 @@ Configuration options:
--disable-ffmpeg disable ffmpeg build --disable-ffmpeg disable ffmpeg build
--disable-avplay disable avplay build --disable-avplay disable avplay build
--disable-avprobe disable avprobe build --disable-avprobe disable avprobe build
--disable-ffserver disable ffserver build --disable-avserver disable avserver build
--disable-avdevice disable libavdevice build --disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build --disable-avcodec disable libavcodec build
--disable-avformat disable libavformat build --disable-avformat disable libavformat build
@ -915,7 +915,7 @@ CONFIG_LIST="
ffmpeg ffmpeg
avplay avplay
avprobe avprobe
ffserver avserver
fft fft
frei0r frei0r
golomb golomb
@ -1492,8 +1492,8 @@ ffmpeg_select="buffer_filter"
avplay_deps="avcodec avformat swscale sdl" avplay_deps="avcodec avformat swscale sdl"
avplay_select="rdft" avplay_select="rdft"
avprobe_deps="avcodec avformat" avprobe_deps="avcodec avformat"
ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer" avserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
ffserver_extralibs='$ldl' avserver_extralibs='$ldl'
doc_deps="texi2html" doc_deps="texi2html"
@ -1637,7 +1637,7 @@ enable fastdiv
enable ffmpeg enable ffmpeg
enable avplay enable avplay
enable avprobe enable avprobe
enable ffserver enable avserver
enable network enable network
enable optimizations enable optimizations
enable postproc enable postproc
@ -1648,7 +1648,7 @@ enable swscale_alpha
# build settings # build settings
SHFLAGS='-shared -Wl,-soname,$$(@F)' SHFLAGS='-shared -Wl,-soname,$$(@F)'
FFSERVERLDFLAGS=-Wl,-E AVSERVERLDFLAGS=-Wl,-E
LIBPREF="lib" LIBPREF="lib"
LIBSUF=".a" LIBSUF=".a"
FULLNAME='$(NAME)$(BUILDSUF)' FULLNAME='$(NAME)$(BUILDSUF)'
@ -2355,7 +2355,7 @@ case $target_os in
host_libs= host_libs=
;; ;;
sunos) sunos)
FFSERVERLDFLAGS="" AVSERVERLDFLAGS=""
SHFLAGS='-shared -Wl,-h,$$(@F)' SHFLAGS='-shared -Wl,-h,$$(@F)'
enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS" enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
network_extralibs="-lsocket -lnsl" network_extralibs="-lsocket -lnsl"
@ -2400,7 +2400,7 @@ case $target_os in
SLIBSUF=".dylib" SLIBSUF=".dylib"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
FFSERVERLDFLAGS=-Wl,-bind_at_load AVSERVERLDFLAGS=-Wl,-bind_at_load
objformat="macho" objformat="macho"
enabled x86_64 && objformat="macho64" enabled x86_64 && objformat="macho64"
enabled_any pic shared || enabled_any pic shared ||
@ -2472,7 +2472,7 @@ case $target_os in
add_cppflags -D_GNU_SOURCE add_cppflags -D_GNU_SOURCE
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
FFSERVERLDFLAGS="" AVSERVERLDFLAGS=""
LIBSUF="_s.a" LIBSUF="_s.a"
SLIBPREF="" SLIBPREF=""
SLIBSUF=".dll" SLIBSUF=".dll"
@ -3218,7 +3218,7 @@ AS_O=$CC_O
CC_O=$CC_O CC_O=$CC_O
DLLTOOL=$dlltool DLLTOOL=$dlltool
LDFLAGS=$LDFLAGS LDFLAGS=$LDFLAGS
FFSERVERLDFLAGS=$FFSERVERLDFLAGS AVSERVERLDFLAGS=$AVSERVERLDFLAGS
SHFLAGS=$SHFLAGS SHFLAGS=$SHFLAGS
YASMFLAGS=$YASMFLAGS YASMFLAGS=$YASMFLAGS
BUILDSUF=$build_suffix BUILDSUF=$build_suffix

View File

@ -170,7 +170,7 @@ Seek to percentage in file corresponding to fraction of width.
@settitle AVplay media player @settitle AVplay media player
@c man begin SEEALSO @c man begin SEEALSO
ffmpeg(1), avprobe(1), ffserver(1) and the Libav HTML documentation ffmpeg(1), avprobe(1), avserver(1) and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS

View File

@ -122,7 +122,7 @@ with name "STREAM".
@settitle avprobe media prober @settitle avprobe media prober
@c man begin SEEALSO @c man begin SEEALSO
ffmpeg(1), avplay(1), ffserver(1) and the Libav HTML documentation ffmpeg(1), avplay(1), avserver(1) and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS

View File

@ -12,7 +12,7 @@ BindAddress 0.0.0.0
# MaxClients maximum limit. # MaxClients maximum limit.
MaxHTTPConnections 2000 MaxHTTPConnections 2000
# Number of simultaneous requests that can be handled. Since FFServer # Number of simultaneous requests that can be handled. Since AVServer
# is very fast, it is more likely that you will want to leave this high # is very fast, it is more likely that you will want to leave this high
# and use MaxBandwidth, below. # and use MaxBandwidth, below.
MaxClients 1000 MaxClients 1000
@ -25,24 +25,24 @@ MaxBandwidth 1000
# '-' is the standard output. # '-' is the standard output.
CustomLog - CustomLog -
# Suppress that if you want to launch ffserver as a daemon. # Suppress that if you want to launch avserver as a daemon.
NoDaemon NoDaemon
################################################################## ##################################################################
# Definition of the live feeds. Each live feed contains one video # Definition of the live feeds. Each live feed contains one video
# and/or audio sequence coming from an ffmpeg encoder or another # and/or audio sequence coming from an ffmpeg encoder or another
# ffserver. This sequence may be encoded simultaneously with several # avserver. This sequence may be encoded simultaneously with several
# codecs at several resolutions. # codecs at several resolutions.
<Feed feed1.ffm> <Feed feed1.ffm>
# You must use 'ffmpeg' to send a live feed to ffserver. In this # You must use 'ffmpeg' to send a live feed to avserver. In this
# example, you can type: # example, you can type:
# #
# ffmpeg http://localhost:8090/feed1.ffm # ffmpeg http://localhost:8090/feed1.ffm
# ffserver can also do time shifting. It means that it can stream any # avserver can also do time shifting. It means that it can stream any
# previously recorded live stream. The request should contain: # previously recorded live stream. The request should contain:
# "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify # "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify
# a path where the feed is stored on disk. You also specify the # a path where the feed is stored on disk. You also specify the
@ -69,7 +69,7 @@ ACL allow 127.0.0.1
################################################################## ##################################################################
# Now you can define each stream which will be generated from the # Now you can define each stream which will be generated from the
# original audio and video stream. Each format has a filename (here # original audio and video stream. Each format has a filename (here
# 'test1.mpg'). FFServer will send this stream when answering a # 'test1.mpg'). AVServer will send this stream when answering a
# request containing this filename. # request containing this filename.
<Stream test1.mpg> <Stream test1.mpg>
@ -334,7 +334,7 @@ StartSendOnKey
# multicast address with MulticastAddress. The port and the TTL can # multicast address with MulticastAddress. The port and the TTL can
# also be set. # also be set.
# #
# An SDP file is automatically generated by ffserver by adding the # An SDP file is automatically generated by avserver by adding the
# 'sdp' extension to the stream name (here # 'sdp' extension to the stream name (here
# http://localhost:8090/test1-sdp.sdp). You should usually give this # http://localhost:8090/test1-sdp.sdp). You should usually give this
# file to your player to play the stream. # file to your player to play the stream.

View File

@ -1,8 +1,8 @@
\input texinfo @c -*- texinfo -*- \input texinfo @c -*- texinfo -*-
@settitle ffserver Documentation @settitle avserver Documentation
@titlepage @titlepage
@center @titlefont{ffserver Documentation} @center @titlefont{avserver Documentation}
@end titlepage @end titlepage
@top @top
@ -15,37 +15,37 @@ The generic syntax is:
@example @example
@c man begin SYNOPSIS @c man begin SYNOPSIS
ffserver [options] avserver [options]
@c man end @c man end
@end example @end example
@chapter Description @chapter Description
@c man begin DESCRIPTION @c man begin DESCRIPTION
ffserver is a streaming server for both audio and video. It supports avserver is a streaming server for both audio and video. It supports
several live feeds, streaming from files and time shifting on live feeds several live feeds, streaming from files and time shifting on live feeds
(you can seek to positions in the past on each live feed, provided you (you can seek to positions in the past on each live feed, provided you
specify a big enough feed storage in ffserver.conf). specify a big enough feed storage in avserver.conf).
ffserver runs in daemon mode by default; that is, it puts itself in avserver runs in daemon mode by default; that is, it puts itself in
the background and detaches from its TTY, unless it is launched in the background and detaches from its TTY, unless it is launched in
debug mode or a NoDaemon option is specified in the configuration debug mode or a NoDaemon option is specified in the configuration
file. file.
This documentation covers only the streaming aspects of ffserver / This documentation covers only the streaming aspects of avserver /
ffmpeg. All questions about parameters for ffmpeg, codec questions, ffmpeg. All questions about parameters for ffmpeg, codec questions,
etc. are not covered here. Read @file{ffmpeg-doc.html} for more etc. are not covered here. Read @file{ffmpeg-doc.html} for more
information. information.
@section How does it work? @section How does it work?
ffserver receives prerecorded files or FFM streams from some ffmpeg avserver receives prerecorded files or FFM streams from some ffmpeg
instance as input, then streams them over RTP/RTSP/HTTP. instance as input, then streams them over RTP/RTSP/HTTP.
An ffserver instance will listen on some port as specified in the An avserver instance will listen on some port as specified in the
configuration file. You can launch one or more instances of ffmpeg and configuration file. You can launch one or more instances of ffmpeg and
send one or more FFM streams to the port where ffserver is expecting send one or more FFM streams to the port where avserver is expecting
to receive them. Alternately, you can make ffserver launch such ffmpeg to receive them. Alternately, you can make avserver launch such ffmpeg
instances at startup. instances at startup.
Input streams are called feeds, and each one is specified by a <Feed> Input streams are called feeds, and each one is specified by a <Feed>
@ -57,7 +57,7 @@ file.
@section Status stream @section Status stream
ffserver supports an HTTP interface which exposes the current status avserver supports an HTTP interface which exposes the current status
of the server. of the server.
Simply point your browser to the address of the special status stream Simply point your browser to the address of the special status stream
@ -100,7 +100,7 @@ I understand that FreeBSD systems work just fine as well.
@section How do I make it work? @section How do I make it work?
First, build the kit. It *really* helps to have installed LAME first. Then when First, build the kit. It *really* helps to have installed LAME first. Then when
you run the ffserver ./configure, make sure that you have the you run the avserver ./configure, make sure that you have the
@code{--enable-libmp3lame} flag turned on. @code{--enable-libmp3lame} flag turned on.
LAME is important as it allows for streaming audio to Windows Media Player. LAME is important as it allows for streaming audio to Windows Media Player.
@ -110,7 +110,7 @@ As a simple test, just run the following two command lines where INPUTFILE
is some file which you can decode with ffmpeg: is some file which you can decode with ffmpeg:
@example @example
./ffserver -f doc/ffserver.conf & ./avserver -f doc/avserver.conf &
./ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm ./ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm
@end example @end example
@ -129,8 +129,8 @@ The same is true of AVI files.
@section What happens next? @section What happens next?
You should edit the ffserver.conf file to suit your needs (in terms of You should edit the avserver.conf file to suit your needs (in terms of
frame rates etc). Then install ffserver and ffmpeg, write a script to start frame rates etc). Then install avserver and ffmpeg, write a script to start
them up, and off you go. them up, and off you go.
@section Troubleshooting @section Troubleshooting
@ -166,14 +166,14 @@ I suspect that the new one is not available unless you have installed WMP 7].
You can replay video from .ffm files that was recorded earlier. You can replay video from .ffm files that was recorded earlier.
However, there are a number of caveats, including the fact that the However, there are a number of caveats, including the fact that the
ffserver parameters must match the original parameters used to record the avserver parameters must match the original parameters used to record the
file. If they do not, then ffserver deletes the file before recording into it. file. If they do not, then avserver deletes the file before recording into it.
(Now that I write this, it seems broken). (Now that I write this, it seems broken).
You can fiddle with many of the codec choices and encoding parameters, and You can fiddle with many of the codec choices and encoding parameters, and
there are a bunch more parameters that you cannot control. Post a message there are a bunch more parameters that you cannot control. Post a message
to the mailing list if there are some 'must have' parameters. Look in to the mailing list if there are some 'must have' parameters. Look in
ffserver.conf for a list of the currently available controls. avserver.conf for a list of the currently available controls.
It will automatically generate the ASX or RAM files that are often used It will automatically generate the ASX or RAM files that are often used
in browsers. These files are actually redirections to the underlying ASF in browsers. These files are actually redirections to the underlying ASF
@ -187,7 +187,7 @@ finishes.]
* When you connect to a live stream, most players (WMP, RA, etc) want to * When you connect to a live stream, most players (WMP, RA, etc) want to
buffer a certain number of seconds of material so that they can display the buffer a certain number of seconds of material so that they can display the
signal continuously. However, ffserver (by default) starts sending data signal continuously. However, avserver (by default) starts sending data
in realtime. This means that there is a pause of a few seconds while the in realtime. This means that there is a pause of a few seconds while the
buffering is being done by the player. The good news is that this can be buffering is being done by the player. The good news is that this can be
cured by adding a '?buffer=5' to the end of the URL. This means that the cured by adding a '?buffer=5' to the end of the URL. This means that the
@ -195,13 +195,13 @@ stream should start 5 seconds in the past -- and so the first 5 seconds
of the stream are sent as fast as the network will allow. It will then of the stream are sent as fast as the network will allow. It will then
slow down to real time. This noticeably improves the startup experience. slow down to real time. This noticeably improves the startup experience.
You can also add a 'Preroll 15' statement into the ffserver.conf that will You can also add a 'Preroll 15' statement into the avserver.conf that will
add the 15 second prebuffering on all requests that do not otherwise add the 15 second prebuffering on all requests that do not otherwise
specify a time. In addition, ffserver will skip frames until a key_frame specify a time. In addition, avserver will skip frames until a key_frame
is found. This further reduces the startup delay by not transferring data is found. This further reduces the startup delay by not transferring data
that will be discarded. that will be discarded.
* You may want to adjust the MaxBandwidth in the ffserver.conf to limit * You may want to adjust the MaxBandwidth in the avserver.conf to limit
the amount of bandwidth consumed by live streams. the amount of bandwidth consumed by live streams.
@section Why does the ?buffer / Preroll stop working after a time? @section Why does the ?buffer / Preroll stop working after a time?
@ -218,7 +218,7 @@ handled.
@section Does the @code{?date=} stuff work. @section Does the @code{?date=} stuff work.
Yes (subject to the limitation outlined above). Also note that whenever you Yes (subject to the limitation outlined above). Also note that whenever you
start ffserver, it deletes the ffm file (if any parameters have changed), start avserver, it deletes the ffm file (if any parameters have changed),
thus wiping out what you had recorded before. thus wiping out what you had recorded before.
The format of the @code{?date=xxxxxx} is fairly flexible. You should use one The format of the @code{?date=xxxxxx} is fairly flexible. You should use one
@ -246,26 +246,26 @@ For example: @samp{http://localhost:8080/test.asf?date=2002-07-26T23:05:00}.
@table @option @table @option
@item -f @var{configfile} @item -f @var{configfile}
Use @file{configfile} instead of @file{/etc/ffserver.conf}. Use @file{configfile} instead of @file{/etc/avserver.conf}.
@item -n @item -n
Enable no-launch mode. This option disables all the Launch directives Enable no-launch mode. This option disables all the Launch directives
within the various <Stream> sections. Since ffserver will not launch within the various <Stream> sections. Since avserver will not launch
any ffmpeg instances, you will have to launch them manually. any ffmpeg instances, you will have to launch them manually.
@item -d @item -d
Enable debug mode. This option increases log verbosity, directs log Enable debug mode. This option increases log verbosity, directs log
messages to stdout and causes ffserver to run in the foreground messages to stdout and causes avserver to run in the foreground
rather than as a daemon. rather than as a daemon.
@end table @end table
@c man end @c man end
@ignore @ignore
@setfilename ffserver @setfilename avserver
@settitle ffserver video server @settitle avserver video server
@c man begin SEEALSO @c man begin SEEALSO
ffmpeg(1), avplay(1), avprobe(1), the @file{ffmpeg/doc/ffserver.conf} ffmpeg(1), avplay(1), avprobe(1), the @file{ffmpeg/doc/avserver.conf}
example and the Libav HTML documentation example and the Libav HTML documentation
@c man end @c man end

View File

@ -164,7 +164,7 @@ Set the number of video frames to record.
@item -r @var{fps} @item -r @var{fps}
Set frame rate (Hz value, fraction or abbreviation), (default = 25). Set frame rate (Hz value, fraction or abbreviation), (default = 25).
@item -s @var{size} @item -s @var{size}
Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source). Set frame size. The format is @samp{wxh} (avserver default = 160x128, ffmpeg default = same as source).
The following abbreviations are recognized: The following abbreviations are recognized:
@table @samp @table @samp
@item sqcif @item sqcif
@ -726,7 +726,7 @@ Set RTP payload size in bytes.
Read input at native frame rate. Mainly used to simulate a grab device. Read input at native frame rate. Mainly used to simulate a grab device.
@item -loop_input @item -loop_input
Loop over the input stream. Currently it works only for image Loop over the input stream. Currently it works only for image
streams. This option is used for automatic FFserver testing. streams. This option is used for automatic AVserver testing.
This option is deprecated, use -loop. This option is deprecated, use -loop.
@item -loop_output @var{number_of_times} @item -loop_output @var{number_of_times}
Repeatedly loop output for formats that support looping such as animated GIF Repeatedly loop output for formats that support looping such as animated GIF
@ -1079,7 +1079,7 @@ file to which you want to add them.
@settitle ffmpeg video converter @settitle ffmpeg video converter
@c man begin SEEALSO @c man begin SEEALSO
avplay(1), avprobe(1), ffserver(1) and the Libav HTML documentation avplay(1), avprobe(1), avserver(1) and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS

View File

@ -91,7 +91,7 @@ library:
@item Electronic Arts cdata @tab @tab X @item Electronic Arts cdata @tab @tab X
@item Electronic Arts Multimedia @tab @tab X @item Electronic Arts Multimedia @tab @tab X
@tab Used in various EA games; files have extensions like WVE and UV2. @tab Used in various EA games; files have extensions like WVE and UV2.
@item FFM (FFserver live feed) @tab X @tab X @item FFM (AVserver live feed) @tab X @tab X
@item Flash (SWF) @tab X @tab X @item Flash (SWF) @tab X @tab X
@item Flash 9 (AVM2) @tab X @tab X @item Flash 9 (AVM2) @tab X @tab X
@tab Only embedded audio is decoded. @tab Only embedded audio is decoded.

View File

@ -691,7 +691,7 @@ static OutputStream *new_output_stream(AVFormatContext *oc, int file_idx, AVCode
return ost; return ost;
} }
static int read_ffserver_streams(AVFormatContext *s, const char *filename) static int read_avserver_streams(AVFormatContext *s, const char *filename)
{ {
int i, err; int i, err;
AVFormatContext *ic = NULL; AVFormatContext *ic = NULL;
@ -3766,9 +3766,9 @@ static void opt_output_file(const char *filename)
if (!strcmp(file_oformat->name, "ffm") && if (!strcmp(file_oformat->name, "ffm") &&
av_strstart(filename, "http:", NULL)) { av_strstart(filename, "http:", NULL)) {
/* special case for files sent to ffserver: we get the stream /* special case for files sent to avserver: we get the stream
parameters from ffserver */ parameters from avserver */
int err = read_ffserver_streams(oc, filename); int err = read_avserver_streams(oc, filename);
if (err < 0) { if (err < 0) {
print_error(filename, err); print_error(filename, err);
ffmpeg_exit(1); ffmpeg_exit(1);

View File

@ -1,5 +1,5 @@
/* /*
* FFM (ffserver live feed) common header * FFM (avserver live feed) common header
* Copyright (c) 2001 Fabrice Bellard * Copyright (c) 2001 Fabrice Bellard
* *
* This file is part of Libav. * This file is part of Libav.

View File

@ -1,5 +1,5 @@
/* /*
* FFM (ffserver live feed) demuxer * FFM (avserver live feed) demuxer
* Copyright (c) 2001 Fabrice Bellard * Copyright (c) 2001 Fabrice Bellard
* *
* This file is part of Libav. * This file is part of Libav.
@ -23,7 +23,7 @@
#include "libavutil/intfloat_readwrite.h" #include "libavutil/intfloat_readwrite.h"
#include "avformat.h" #include "avformat.h"
#include "ffm.h" #include "ffm.h"
#if CONFIG_FFSERVER #if CONFIG_AVSERVER
#include <unistd.h> #include <unistd.h>
int64_t ffm_read_write_index(int fd) int64_t ffm_read_write_index(int fd)
@ -55,7 +55,7 @@ void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size)
ffm->write_index = pos; ffm->write_index = pos;
ffm->file_size = file_size; ffm->file_size = file_size;
} }
#endif // CONFIG_FFSERVER #endif // CONFIG_AVSERVER
static int ffm_is_avail_data(AVFormatContext *s, int size) static int ffm_is_avail_data(AVFormatContext *s, int size)
{ {
@ -510,7 +510,7 @@ static int ffm_probe(AVProbeData *p)
AVInputFormat ff_ffm_demuxer = { AVInputFormat ff_ffm_demuxer = {
.name = "ffm", .name = "ffm",
.long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed) format"), .long_name = NULL_IF_CONFIG_SMALL("FFM (AVserver live feed) format"),
.priv_data_size = sizeof(FFMContext), .priv_data_size = sizeof(FFMContext),
.read_probe = ffm_probe, .read_probe = ffm_probe,
.read_header = ffm_read_header, .read_header = ffm_read_header,

View File

@ -1,5 +1,5 @@
/* /*
* FFM (ffserver live feed) muxer * FFM (avserver live feed) muxer
* Copyright (c) 2001 Fabrice Bellard * Copyright (c) 2001 Fabrice Bellard
* *
* This file is part of Libav. * This file is part of Libav.
@ -242,7 +242,7 @@ static int ffm_write_trailer(AVFormatContext *s)
AVOutputFormat ff_ffm_muxer = { AVOutputFormat ff_ffm_muxer = {
.name = "ffm", .name = "ffm",
.long_name = NULL_IF_CONFIG_SMALL("FFM (FFserver live feed) format"), .long_name = NULL_IF_CONFIG_SMALL("FFM (AVserver live feed) format"),
.mime_type = "", .mime_type = "",
.extensions = "ffm", .extensions = "ffm",
.priv_data_size = sizeof(FFMContext), .priv_data_size = sizeof(FFMContext),

View File

@ -22,7 +22,7 @@
/* Multipart JPEG */ /* Multipart JPEG */
#define BOUNDARY_TAG "ffserver" #define BOUNDARY_TAG "avserver"
static int mpjpeg_write_header(AVFormatContext *s) static int mpjpeg_write_header(AVFormatContext *s)
{ {