@@ -14,7 +14,7 @@ doxy | |||
ffmpeg | |||
avplay | |||
avprobe | |||
ffserver | |||
avserver | |||
libavcodec/*_tablegen | |||
libavcodec/*_tables.c | |||
libavcodec/*_tables.h | |||
@@ -5,7 +5,7 @@ releases are sorted from youngest to oldest. | |||
version <next>: | |||
- BWF muxer | |||
- Flash Screen Video 2 decoder | |||
- ffplay/ffprobe renamed to avplay/avprobe | |||
- ffplay/ffprobe/ffserver renamed to avplay/avprobe/avserver | |||
version 0.7: | |||
@@ -55,7 +55,7 @@ COMPILE_S = $(call COMPILE,AS) | |||
PROGS-$(CONFIG_FFMPEG) += ffmpeg | |||
PROGS-$(CONFIG_AVPLAY) += avplay | |||
PROGS-$(CONFIG_AVPROBE) += avprobe | |||
PROGS-$(CONFIG_FFSERVER) += ffserver | |||
PROGS-$(CONFIG_AVSERVER) += avserver | |||
PROGS := $(PROGS-yes:%=%$(EXESUF)) | |||
OBJS = $(PROGS-yes:%=%.o) cmdutils.o | |||
@@ -64,7 +64,7 @@ HOSTPROGS := $(TESTTOOLS:%=tests/%) | |||
TOOLS = qt-faststart trasher | |||
TOOLS-$(CONFIG_ZLIB) += cws2fws | |||
BASENAMES = ffmpeg avplay avprobe ffserver | |||
BASENAMES = ffmpeg avplay avprobe avserver | |||
ALLPROGS = $(BASENAMES:%=%$(EXESUF)) | |||
ALLMANPAGES = $(BASENAMES:%=%.1) | |||
@@ -118,7 +118,7 @@ $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) | |||
avplay.o: CFLAGS += $(SDL_CFLAGS) | |||
avplay$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS) | |||
ffserver$(EXESUF): LDFLAGS += $(FFSERVERLDFLAGS) | |||
avserver$(EXESUF): LDFLAGS += $(AVSERVERLDFLAGS) | |||
$(PROGS): %$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS) | |||
$(LD) $(LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS) | |||
@@ -59,7 +59,7 @@ | |||
#include "cmdutils.h" | |||
const char program_name[] = "ffserver"; | |||
const char program_name[] = "avserver"; | |||
const int program_birth_year = 2000; | |||
static const OptionDef options[]; | |||
@@ -200,7 +200,7 @@ typedef struct IPAddressACL { | |||
struct in_addr last; | |||
} IPAddressACL; | |||
/* description of each stream of the ffserver.conf file */ | |||
/* description of each stream of the avserver.conf file */ | |||
typedef struct FFStream { | |||
enum StreamType stream_type; | |||
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_dir; | |||
static const char *config_filename = "/etc/ffserver.conf"; | |||
static const char *config_filename = "/etc/avserver.conf"; | |||
static int ffserver_debug; | |||
static int ffserver_daemon; | |||
static int avserver_debug; | |||
static int avserver_daemon; | |||
static int no_launch; | |||
static int need_to_start_children; | |||
@@ -320,7 +320,7 @@ static AVLFG random_state; | |||
static FILE *logfile = NULL; | |||
/* FIXME: make ffserver work with IPv6 */ | |||
/* FIXME: make avserver work with IPv6 */ | |||
/* resolve host with also IP address parsing */ | |||
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++) | |||
close(i); | |||
if (!ffserver_debug) { | |||
if (!avserver_debug) { | |||
i = open("/dev/null", O_RDWR); | |||
if (i != -1) { | |||
dup2(i, 0); | |||
@@ -620,7 +620,7 @@ static int http_server(void) | |||
return -1; | |||
} | |||
http_log("FFserver started.\n"); | |||
http_log("AVserver started.\n"); | |||
start_children(first_feed); | |||
@@ -664,7 +664,7 @@ static int http_server(void) | |||
poll_entry->events = POLLOUT; | |||
poll_entry++; | |||
} 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 | |||
10 ms */ | |||
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)); | |||
if (ffserver_debug) | |||
if (avserver_debug) | |||
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 */ | |||
@@ -1643,7 +1643,7 @@ static int http_parse_request(HTTPContext *c) | |||
"Content-type: video/x-ms-asf\r\n" | |||
"\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" | |||
"</ASX>\r\n", hostbuf, filename, info); | |||
break; | |||
@@ -1652,7 +1652,7 @@ static int http_parse_request(HTTPContext *c) | |||
"HTTP/1.0 200 RAM Follows\r\n" | |||
"Content-type: audio/x-pn-realaudio\r\n" | |||
"\r\n" | |||
"# Autogenerated by ffserver\r\n" | |||
"# Autogenerated by avserver\r\n" | |||
"http://%s/%s%s\r\n", hostbuf, filename, info); | |||
break; | |||
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) | |||
{ | |||
@@ -3914,10 +3914,10 @@ static void load_module(const char *filename) | |||
return; | |||
} | |||
init_func = dlsym(dll, "ffserver_module_init"); | |||
init_func = dlsym(dll, "avserver_module_init"); | |||
if (!init_func) { | |||
fprintf(stderr, | |||
"%s: init function 'ffserver_module_init()' not found\n", | |||
"%s: init function 'avserver_module_init()' not found\n", | |||
filename); | |||
dlclose(dll); | |||
} | |||
@@ -3926,7 +3926,7 @@ static void load_module(const char *filename) | |||
} | |||
#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) | |||
{ | |||
int ret = 0; | |||
@@ -3936,7 +3936,7 @@ static int ffserver_opt_default(const char *opt, const char *arg, | |||
return ret; | |||
} | |||
static int ffserver_opt_preset(const char *arg, | |||
static int avserver_opt_preset(const char *arg, | |||
AVCodecContext *avctx, int type, | |||
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); | |||
}else if(!strcmp(tmp, "scodec")){ | |||
/* 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); | |||
ret = 1; | |||
break; | |||
@@ -3979,7 +3979,7 @@ static int ffserver_opt_preset(const char *arg, | |||
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) | |||
{ | |||
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); | |||
} | |||
} else if (!strcasecmp(cmd, "NoDaemon")) { | |||
ffserver_daemon = 0; | |||
avserver_daemon = 0; | |||
} else if (!strcasecmp(cmd, "RTSPPort")) { | |||
get_arg(arg, sizeof(arg), &p); | |||
val = atoi(arg); | |||
@@ -4103,7 +4103,7 @@ static int parse_ffconfig(const char *filename) | |||
} else | |||
max_bandwidth = llval; | |||
} else if (!strcasecmp(cmd, "CustomLog")) { | |||
if (!ffserver_debug) | |||
if (!avserver_debug) | |||
get_arg(logfilename, sizeof(logfilename), &p); | |||
} 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(&audio_enc, AVMEDIA_TYPE_AUDIO); | |||
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 */ | |||
if (!strcmp(arg, "jpeg")) | |||
strcpy(arg, "mjpeg"); | |||
stream->fmt = ffserver_guess_format(arg, NULL, NULL); | |||
stream->fmt = avserver_guess_format(arg, NULL, NULL); | |||
if (!stream->fmt) { | |||
ERROR("Unknown Format: %s\n", arg); | |||
} | |||
@@ -4430,7 +4430,7 @@ static int parse_ffconfig(const char *filename) | |||
avctx = &audio_enc; | |||
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); | |||
} | |||
} else if (!strcasecmp(cmd, "AVPresetVideo") || | |||
@@ -4447,7 +4447,7 @@ static int parse_ffconfig(const char *filename) | |||
audio_enc.codec_id = audio_id; | |||
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); | |||
} | |||
} else if (!strcasecmp(cmd, "VideoTag")) { | |||
@@ -4638,14 +4638,14 @@ static void handle_child_exit(int sig) | |||
static void opt_debug(void) | |||
{ | |||
ffserver_debug = 1; | |||
ffserver_daemon = 0; | |||
avserver_debug = 1; | |||
avserver_daemon = 0; | |||
logfilename[0] = '-'; | |||
} | |||
static void show_help(void) | |||
{ | |||
printf("usage: ffserver [options]\n" | |||
printf("usage: avserver [options]\n" | |||
"Hyper fast multi format Audio/Video streaming server\n"); | |||
printf("\n"); | |||
show_help_options(options, "Main options:\n", 0, 0); | |||
@@ -4655,7 +4655,7 @@ static const OptionDef options[] = { | |||
#include "cmdutils_common_opts.h" | |||
{ "n", OPT_BOOL, {(void *)&no_launch }, "enable no-launch 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 }, | |||
}; | |||
@@ -4669,7 +4669,7 @@ int main(int argc, char **argv) | |||
my_program_name = argv[0]; | |||
my_program_dir = getcwd(0, 0); | |||
ffserver_daemon = 1; | |||
avserver_daemon = 1; | |||
parse_options(argc, argv, options, NULL); | |||
@@ -4703,7 +4703,7 @@ int main(int argc, char **argv) | |||
compute_bandwidth(); | |||
/* put the process in background and detach it from its TTY */ | |||
if (ffserver_daemon) { | |||
if (avserver_daemon) { | |||
int pid; | |||
pid = fork(); | |||
@@ -4730,7 +4730,7 @@ int main(int argc, char **argv) | |||
/* signal init */ | |||
signal(SIGPIPE, SIG_IGN); | |||
if (ffserver_daemon) | |||
if (avserver_daemon) | |||
chdir("/"); | |||
if (http_server() < 0) { |
@@ -83,7 +83,7 @@ Configuration options: | |||
--disable-ffmpeg disable ffmpeg build | |||
--disable-avplay disable avplay build | |||
--disable-avprobe disable avprobe build | |||
--disable-ffserver disable ffserver build | |||
--disable-avserver disable avserver build | |||
--disable-avdevice disable libavdevice build | |||
--disable-avcodec disable libavcodec build | |||
--disable-avformat disable libavformat build | |||
@@ -915,7 +915,7 @@ CONFIG_LIST=" | |||
ffmpeg | |||
avplay | |||
avprobe | |||
ffserver | |||
avserver | |||
fft | |||
frei0r | |||
golomb | |||
@@ -1492,8 +1492,8 @@ ffmpeg_select="buffer_filter" | |||
avplay_deps="avcodec avformat swscale sdl" | |||
avplay_select="rdft" | |||
avprobe_deps="avcodec avformat" | |||
ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer" | |||
ffserver_extralibs='$ldl' | |||
avserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer" | |||
avserver_extralibs='$ldl' | |||
doc_deps="texi2html" | |||
@@ -1637,7 +1637,7 @@ enable fastdiv | |||
enable ffmpeg | |||
enable avplay | |||
enable avprobe | |||
enable ffserver | |||
enable avserver | |||
enable network | |||
enable optimizations | |||
enable postproc | |||
@@ -1648,7 +1648,7 @@ enable swscale_alpha | |||
# build settings | |||
SHFLAGS='-shared -Wl,-soname,$$(@F)' | |||
FFSERVERLDFLAGS=-Wl,-E | |||
AVSERVERLDFLAGS=-Wl,-E | |||
LIBPREF="lib" | |||
LIBSUF=".a" | |||
FULLNAME='$(NAME)$(BUILDSUF)' | |||
@@ -2355,7 +2355,7 @@ case $target_os in | |||
host_libs= | |||
;; | |||
sunos) | |||
FFSERVERLDFLAGS="" | |||
AVSERVERLDFLAGS="" | |||
SHFLAGS='-shared -Wl,-h,$$(@F)' | |||
enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS" | |||
network_extralibs="-lsocket -lnsl" | |||
@@ -2400,7 +2400,7 @@ case $target_os in | |||
SLIBSUF=".dylib" | |||
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' | |||
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' | |||
FFSERVERLDFLAGS=-Wl,-bind_at_load | |||
AVSERVERLDFLAGS=-Wl,-bind_at_load | |||
objformat="macho" | |||
enabled x86_64 && objformat="macho64" | |||
enabled_any pic shared || | |||
@@ -2472,7 +2472,7 @@ case $target_os in | |||
add_cppflags -D_GNU_SOURCE | |||
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap | |||
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' | |||
FFSERVERLDFLAGS="" | |||
AVSERVERLDFLAGS="" | |||
LIBSUF="_s.a" | |||
SLIBPREF="" | |||
SLIBSUF=".dll" | |||
@@ -3218,7 +3218,7 @@ AS_O=$CC_O | |||
CC_O=$CC_O | |||
DLLTOOL=$dlltool | |||
LDFLAGS=$LDFLAGS | |||
FFSERVERLDFLAGS=$FFSERVERLDFLAGS | |||
AVSERVERLDFLAGS=$AVSERVERLDFLAGS | |||
SHFLAGS=$SHFLAGS | |||
YASMFLAGS=$YASMFLAGS | |||
BUILDSUF=$build_suffix | |||
@@ -170,7 +170,7 @@ Seek to percentage in file corresponding to fraction of width. | |||
@settitle AVplay media player | |||
@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 begin AUTHORS | |||
@@ -122,7 +122,7 @@ with name "STREAM". | |||
@settitle avprobe media prober | |||
@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 begin AUTHORS | |||
@@ -12,7 +12,7 @@ BindAddress 0.0.0.0 | |||
# MaxClients maximum limit. | |||
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 | |||
# and use MaxBandwidth, below. | |||
MaxClients 1000 | |||
@@ -25,24 +25,24 @@ MaxBandwidth 1000 | |||
# '-' is the standard output. | |||
CustomLog - | |||
# Suppress that if you want to launch ffserver as a daemon. | |||
# Suppress that if you want to launch avserver as a daemon. | |||
NoDaemon | |||
################################################################## | |||
# Definition of the live feeds. Each live feed contains one video | |||
# 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. | |||
<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: | |||
# | |||
# 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: | |||
# "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 | |||
@@ -69,7 +69,7 @@ ACL allow 127.0.0.1 | |||
################################################################## | |||
# Now you can define each stream which will be generated from the | |||
# 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. | |||
<Stream test1.mpg> | |||
@@ -334,7 +334,7 @@ StartSendOnKey | |||
# multicast address with MulticastAddress. The port and the TTL can | |||
# 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 | |||
# http://localhost:8090/test1-sdp.sdp). You should usually give this | |||
# file to your player to play the stream. |
@@ -1,8 +1,8 @@ | |||
\input texinfo @c -*- texinfo -*- | |||
@settitle ffserver Documentation | |||
@settitle avserver Documentation | |||
@titlepage | |||
@center @titlefont{ffserver Documentation} | |||
@center @titlefont{avserver Documentation} | |||
@end titlepage | |||
@top | |||
@@ -15,37 +15,37 @@ The generic syntax is: | |||
@example | |||
@c man begin SYNOPSIS | |||
ffserver [options] | |||
avserver [options] | |||
@c man end | |||
@end example | |||
@chapter 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 | |||
(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 | |||
debug mode or a NoDaemon option is specified in the configuration | |||
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, | |||
etc. are not covered here. Read @file{ffmpeg-doc.html} for more | |||
information. | |||
@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. | |||
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 | |||
send one or more FFM streams to the port where ffserver is expecting | |||
to receive them. Alternately, you can make ffserver launch such ffmpeg | |||
send one or more FFM streams to the port where avserver is expecting | |||
to receive them. Alternately, you can make avserver launch such ffmpeg | |||
instances at startup. | |||
Input streams are called feeds, and each one is specified by a <Feed> | |||
@@ -57,7 +57,7 @@ file. | |||
@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. | |||
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? | |||
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. | |||
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: | |||
@example | |||
./ffserver -f doc/ffserver.conf & | |||
./avserver -f doc/avserver.conf & | |||
./ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm | |||
@end example | |||
@@ -129,8 +129,8 @@ The same is true of AVI files. | |||
@section What happens next? | |||
You should edit the ffserver.conf file to suit your needs (in terms of | |||
frame rates etc). Then install ffserver and ffmpeg, write a script to start | |||
You should edit the avserver.conf file to suit your needs (in terms of | |||
frame rates etc). Then install avserver and ffmpeg, write a script to start | |||
them up, and off you go. | |||
@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. | |||
However, there are a number of caveats, including the fact that the | |||
ffserver parameters must match the original parameters used to record the | |||
file. If they do not, then ffserver deletes the file before recording into it. | |||
avserver parameters must match the original parameters used to record the | |||
file. If they do not, then avserver deletes the file before recording into it. | |||
(Now that I write this, it seems broken). | |||
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 | |||
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 | |||
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 | |||
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 | |||
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 | |||
@@ -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 | |||
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 | |||
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 | |||
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. | |||
@section Why does the ?buffer / Preroll stop working after a time? | |||
@@ -218,7 +218,7 @@ handled. | |||
@section Does the @code{?date=} stuff work. | |||
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. | |||
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 | |||
@item -f @var{configfile} | |||
Use @file{configfile} instead of @file{/etc/ffserver.conf}. | |||
Use @file{configfile} instead of @file{/etc/avserver.conf}. | |||
@item -n | |||
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. | |||
@item -d | |||
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. | |||
@end table | |||
@c man end | |||
@ignore | |||
@setfilename ffserver | |||
@settitle ffserver video server | |||
@setfilename avserver | |||
@settitle avserver video server | |||
@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 | |||
@c man end | |||
@@ -164,7 +164,7 @@ Set the number of video frames to record. | |||
@item -r @var{fps} | |||
Set frame rate (Hz value, fraction or abbreviation), (default = 25). | |||
@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: | |||
@table @samp | |||
@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. | |||
@item -loop_input | |||
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. | |||
@item -loop_output @var{number_of_times} | |||
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 | |||
@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 begin AUTHORS | |||
@@ -91,7 +91,7 @@ library: | |||
@item Electronic Arts cdata @tab @tab X | |||
@item Electronic Arts Multimedia @tab @tab X | |||
@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 9 (AVM2) @tab X @tab X | |||
@tab Only embedded audio is decoded. | |||
@@ -691,7 +691,7 @@ static OutputStream *new_output_stream(AVFormatContext *oc, int file_idx, AVCode | |||
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; | |||
AVFormatContext *ic = NULL; | |||
@@ -3766,9 +3766,9 @@ static void opt_output_file(const char *filename) | |||
if (!strcmp(file_oformat->name, "ffm") && | |||
av_strstart(filename, "http:", NULL)) { | |||
/* special case for files sent to ffserver: we get the stream | |||
parameters from ffserver */ | |||
int err = read_ffserver_streams(oc, filename); | |||
/* special case for files sent to avserver: we get the stream | |||
parameters from avserver */ | |||
int err = read_avserver_streams(oc, filename); | |||
if (err < 0) { | |||
print_error(filename, err); | |||
ffmpeg_exit(1); | |||
@@ -1,5 +1,5 @@ | |||
/* | |||
* FFM (ffserver live feed) common header | |||
* FFM (avserver live feed) common header | |||
* Copyright (c) 2001 Fabrice Bellard | |||
* | |||
* This file is part of Libav. | |||
@@ -1,5 +1,5 @@ | |||
/* | |||
* FFM (ffserver live feed) demuxer | |||
* FFM (avserver live feed) demuxer | |||
* Copyright (c) 2001 Fabrice Bellard | |||
* | |||
* This file is part of Libav. | |||
@@ -23,7 +23,7 @@ | |||
#include "libavutil/intfloat_readwrite.h" | |||
#include "avformat.h" | |||
#include "ffm.h" | |||
#if CONFIG_FFSERVER | |||
#if CONFIG_AVSERVER | |||
#include <unistd.h> | |||
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->file_size = file_size; | |||
} | |||
#endif // CONFIG_FFSERVER | |||
#endif // CONFIG_AVSERVER | |||
static int ffm_is_avail_data(AVFormatContext *s, int size) | |||
{ | |||
@@ -510,7 +510,7 @@ static int ffm_probe(AVProbeData *p) | |||
AVInputFormat ff_ffm_demuxer = { | |||
.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), | |||
.read_probe = ffm_probe, | |||
.read_header = ffm_read_header, | |||
@@ -1,5 +1,5 @@ | |||
/* | |||
* FFM (ffserver live feed) muxer | |||
* FFM (avserver live feed) muxer | |||
* Copyright (c) 2001 Fabrice Bellard | |||
* | |||
* This file is part of Libav. | |||
@@ -242,7 +242,7 @@ static int ffm_write_trailer(AVFormatContext *s) | |||
AVOutputFormat ff_ffm_muxer = { | |||
.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 = "", | |||
.extensions = "ffm", | |||
.priv_data_size = sizeof(FFMContext), | |||
@@ -22,7 +22,7 @@ | |||
/* Multipart JPEG */ | |||
#define BOUNDARY_TAG "ffserver" | |||
#define BOUNDARY_TAG "avserver" | |||
static int mpjpeg_write_header(AVFormatContext *s) | |||
{ | |||