Hello,

In case it's of interest to anyone, I solved my problem in a different way.
I now use named pipes, like so:

```
PIPE_FILE= /path/to/pip/file
mkfifo $PIPE_FILE
exec 7<>$PIPE_FILE
ffmpeg -nostdin  -i /path/to/source -acodec copy -vcodec copy -vbsf 
h264_mp4toannexb -f mpegts pipe:1 > $PIPE_FILE
```

`/path/to/source` can be a media file on the FS or an RTMP stream, for that 
matter.

I then re-stream from the pipe to the final RTMP endpoint:
```sh
ffmpeg -re -i $PIPE_FILE -c:v libx264 -preset veryfast -r 25 -g 50 -f flv 
$RTMP_ENDPOINT
```

When $PIPE_FILE stops receiving data (i.e - when streaming stops or, in the 
case of sending data from a local media file, when EOF is reached), I 
immediately launch a different FFmpeg CLI proc and feed the pipe data from the 
backup media file/stream.

That keeps the re-streaming FFmpeg CLI proc continuously up and running.

Cheers,

Excerpts from Jess Portnoy's message of 2020-04-21 13:00:06 +0100:
> Hello all,
> 
> My setup is as follows:
> 
> - Nginx with the RTMP module
> - Multiple RTMP stream pairs, each one with a primary and backup RTMP 
> endpoint (so streaming to rtmp://localhost/main/$STREAM_NAME and 
> rtmp://localhost/backup/$STREAM_NAME)
> - Using the Nginx RTMP module `exec_publish` and `exec_publish_done` hooks, I 
> push either main or backup to an FFmpeg CLI proc that restreams it to a 
> remote RTMP endpoint (Wowza server in this case, though it's not very 
> relevant to my question)
> 
> My problem is that currently, if the main stream is stopped, I have to stop 
> the FFmpeg CLI process that restreams to Wowza and start another with a new 
> input source (the backup stream). This often causes issues on the Wowza side 
> so I'm looking for a way to avoid that.
> 
> After some research, I found that FFmpeg encapsulated ZMQ support but it 
> seems documentation is somewhat sparse. Is it possible to send a message to 
> the running FFmpeg process to alert it that it must change its source to a 
> different RTMP stream?
> 
> I have reviewed 
> https://ffmpeg.org/pipermail/ffmpeg-user/2014-August/022827.html which seems 
> to suggest that perhaps this can be accomplished but requires implementing 
> extra functionality.
> 
> I found some examples for using ZMQ to send commands to a running FFmpeg CLI 
> proc, for instance:
> https://lists.ffmpeg.org/pipermail/ffmpeg-user/2016-September/033777.html
> 
> But no example for what I'm trying to achieve. If it doesn't exist, I am 
> happy to implement it myself as suggested in the first thread I referenced 
> but would appreciate any pointers.
> 
> Another alternative, if it's possible and easier, would perhaps be to start 
> the FFmpeg proc with two input sources and somehow toggle between them with a 
> select filter. For my purposes, one doesn't actually have to be an RTMP 
> stream, it can be a media file that I have on the FS. A flow such as:
> If the source RTMP stream receives data, restream to Wowza, otherwise, stream 
> the backup media file would also work well for me.
> 
> Thanks in advance,
> 

-- 
May the source be with you,

Jess Portnoy
_______________________________________________
ffmpeg-user mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to