Hi there, Updated patch. Please let me know if there are any other changes needed.
I meant FFmpeg version 2.4, by "2.4 level". In case Daemon mode is made default, and user launches FFserver in debug mode, in that case, FFserver would be prevented from forking, forcing foreground mode. I am not sure about why daemon mode was removed. More information on re-enabling daemon mode can be obtained from below link: https://trac.ffmpeg.org/ticket/3731 Thanks, Binathi On Wed, Nov 12, 2014 at 12:45 AM, Binathi Bingi <binti...@gmail.com> wrote: > Hi there, > > Updated patch. > Please let me know if there are any other changes needed. > > I meant FFmpeg version 2.4, by "2.4 level". > In case Daemon mode is made default, and user launches FFserver in debug > mode, in that case, FFserver > would be prevented from forking, forcing foreground mode. > > I am not sure about why daemon mode was removed. > More information on re-enabling daemon mode can be obtained from below > link: > https://trac.ffmpeg.org/ticket/3731 > > Thanks, > > Binathi > > On Tue, Nov 11, 2014 at 6:02 PM, Stefano Sabatini <stefa...@gmail.com> > wrote: > >> On date Tuesday 2014-11-11 00:19:26 +0530, Binathi Bingi encoded: >> > Hi there, >> > >> > Please find the attached patch with modifications. >> [...] >> > From 091b4a02c9325bea32b7f745d028ea72c8e1537e Mon Sep 17 00:00:00 2001 >> > From: Binathi Bingi <binti...@gmail.com> >> > Date: Tue, 4 Nov 2014 21:42:07 +0530 >> > Subject: [PATCH] Restore Daemon mode in FFserver >> > >> > Signed-off-by: Binathi Bingi <binti...@gmail.com> >> > >> > Author: Binathi Bingi <binti...@gmail.com> >> > --- >> > doc/ffserver.conf | 4 ++++ >> > doc/ffserver.texi | 11 +++++++---- >> > ffserver.c | 34 ++++++++++++++++++++++++++++++++++ >> > ffserver_config.c | 4 ++-- >> > ffserver_config.h | 1 + >> > 5 files changed, 48 insertions(+), 6 deletions(-) >> > >> > diff --git a/doc/ffserver.conf b/doc/ffserver.conf >> > index b756961..a017b3c 100644 >> > --- a/doc/ffserver.conf >> > +++ b/doc/ffserver.conf >> > @@ -25,6 +25,10 @@ MaxBandwidth 1000 >> > # '-' is the standard output. >> > CustomLog - >> > >> > +# Enable Daemon, to launch FFserver in Daemon mode. >> > +# For NoDaemon mode, suppress Daemon. >> > +#Daemon >> > + >> > ################################################################## >> > # Definition of the live feeds. Each live feed contains one video >> > # and/or audio sequence coming from an ffmpeg encoder or another >> > diff --git a/doc/ffserver.texi b/doc/ffserver.texi >> > index 77273d2..0c10c2f 100644 >> > --- a/doc/ffserver.texi >> > +++ b/doc/ffserver.texi >> > @@ -404,10 +404,13 @@ If not specified @command{ffserver} will produce >> no log. >> > In case the commandline option @option{-d} is specified this option is >> > ignored, and the log is written to standard output. >> > >> > -@item NoDaemon >> > -Set no-daemon mode. This option is currently ignored since now >> > -@command{ffserver} will always work in no-daemon mode, and is >> > -deprecated. >> > +@item Daemon >> > +Set Daemon mode. The default is NoDaemon. >> >> > +Enabling Daemon mode would allow FFserver, at 2.4 level, fork in >> background >> > +without "&" shell operator. It has logging capability to file, unlike >> in >> > +NoDaemon mode, forks in background upon starting like any daemon and in >> > +debug mode, it is prevented from forking, forcing foreground mode. >> >> In daemon mode @command{ffserver} will fork in background upon >> starting, without the need to specify the "&" shell operator in the >> command line. In daemon mode also @command{ffserver} will continue to >> log on stdout, unlike in NoDaemon mode. >> >> I'm not sure about what you mean by "2.4 level", and about the >> interaction wih the debug mode. >> >> I also missed the discussion about why Daemon mode was removed and >> then we are re-enabling it now, so I probably miss some fundamental >> information. >> >> [...] >> -- >> FFmpeg = Forgiving & Fierce MultiPurpose Exxagerate Game >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > >
From 692fb9ee19d5f9acf080eb98d22ca15fa1176393 Mon Sep 17 00:00:00 2001 From: Binathi Bingi <binti...@gmail.com> Date: Tue, 4 Nov 2014 21:42:07 +0530 Subject: [PATCH] Restore Daemon mode in FFserver Signed-off-by: Binathi Bingi <binti...@gmail.com> Author: Binathi Bingi <binti...@gmail.com> --- doc/ffserver.conf | 4 ++++ doc/ffserver.texi | 11 +++++++---- ffserver.c | 34 ++++++++++++++++++++++++++++++++++ ffserver_config.c | 4 ++-- ffserver_config.h | 1 + 5 files changed, 48 insertions(+), 6 deletions(-) diff --git a/doc/ffserver.conf b/doc/ffserver.conf index b756961..a017b3c 100644 --- a/doc/ffserver.conf +++ b/doc/ffserver.conf @@ -25,6 +25,10 @@ MaxBandwidth 1000 # '-' is the standard output. CustomLog - +# Enable Daemon, to launch FFserver in Daemon mode. +# For NoDaemon mode, suppress Daemon. +#Daemon + ################################################################## # Definition of the live feeds. Each live feed contains one video # and/or audio sequence coming from an ffmpeg encoder or another diff --git a/doc/ffserver.texi b/doc/ffserver.texi index 77273d2..9938500 100644 --- a/doc/ffserver.texi +++ b/doc/ffserver.texi @@ -404,10 +404,13 @@ If not specified @command{ffserver} will produce no log. In case the commandline option @option{-d} is specified this option is ignored, and the log is written to standard output. -@item NoDaemon -Set no-daemon mode. This option is currently ignored since now -@command{ffserver} will always work in no-daemon mode, and is -deprecated. +@item Daemon +Set Daemon mode. The default is NoDaemon. +In daemon mode @command{ffserver} will fork in background upon +starting, without the need to specify the "&" shell operator in the +command line. In daemon mode also @command{ffserver} will continue to +log on stdout, unlike in NoDaemon mode. + @end table @section Feed section diff --git a/ffserver.c b/ffserver.c index ea2a2ae..32b48ee 100644 --- a/ffserver.c +++ b/ffserver.c @@ -3671,6 +3671,7 @@ static void handle_child_exit(int sig) static void opt_debug(void) { config.debug = 1; + config.ffserver_daemon = 0; snprintf(config.logfilename, sizeof(config.logfilename), "-"); } @@ -3737,6 +3738,39 @@ int main(int argc, char **argv) compute_bandwidth(); + if (config.ffserver_daemon) { + pid_t ffserver_id = 0; + pid_t sid = 0; + int fd; + ffserver_id = fork(); + + if (ffserver_id < 0) { + ret = AVERROR(errno); + av_log(NULL, AV_LOG_ERROR, "Impossible to start in daemon mode: %s\n", av_err2str(ret)); + exit(1); + } + + if (ffserver_id > 0) + exit(0); + + sid = setsid(); + if (sid < 0) + exit(1); + + fd = open("/dev/null", O_RDWR,0); + + if (fd < 0) { + ret = AVERROR(errno); + av_log(NULL, AV_LOG_ERROR, "Unable to reopen file descriptors: %s\n", av_err2str(ret)); + exit(1); + } + dup2(fd, 0); + dup2(fd, 2); + if (strcmp(config.logfilename, "-") != 0) + dup2(fd, 1); + close(fd); + } + /* signal init */ signal(SIGPIPE, SIG_IGN); diff --git a/ffserver_config.c b/ffserver_config.c index e44cdf7..f0368c1 100644 --- a/ffserver_config.c +++ b/ffserver_config.c @@ -358,8 +358,8 @@ static int ffserver_parse_config_global(FFServerConfig *config, const char *cmd, ffserver_get_arg(arg, sizeof(arg), p); if (resolve_host(&config->http_addr.sin_addr, arg) != 0) ERROR("%s:%d: Invalid host/IP address: %s\n", arg); - } else if (!av_strcasecmp(cmd, "NoDaemon")) { - WARNING("NoDaemon option has no effect, you should remove it\n"); + } else if (!av_strcasecmp(cmd, "Daemon")){ + config->ffserver_daemon = 1; } else if (!av_strcasecmp(cmd, "RTSPPort")) { ffserver_get_arg(arg, sizeof(arg), p); val = atoi(arg); diff --git a/ffserver_config.h b/ffserver_config.h index 36d61d0..e3957b1 100644 --- a/ffserver_config.h +++ b/ffserver_config.h @@ -100,6 +100,7 @@ typedef struct FFServerConfig { unsigned int nb_max_http_connections; unsigned int nb_max_connections; uint64_t max_bandwidth; + int ffserver_daemon; int debug; char logfilename[1024]; struct sockaddr_in http_addr; -- 1.9.1
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel