mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-26 17:32:06 +00:00
Rename ffserver to avserver.
This commit is contained in:
parent
9e12f0bf5f
commit
4d58e4cb4c
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||||
|
@ -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:
|
||||||
|
6
Makefile
6
Makefile
@ -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)
|
||||||
|
@ -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
20
configure
vendored
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
8
ffmpeg.c
8
ffmpeg.c
@ -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);
|
||||||
|
@ -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.
|
||||||
|
@ -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,
|
||||||
|
@ -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),
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user