Até onde sei, seu fluxo de trabalho não pode ser feito dentro do FFmpeg. Esse fluxo de trabalho pode ser feito do lado do servidor no Wowza Streaming Engine usando um módulo chamado Loop até Live.
Lógica básica.
- O fluxo 1 é o fluxo de "backup". Pode ser um arquivo de pré-lançamento de VOD ou uma transmissão ao vivo.
- O fluxo 2 é o fluxo principal.
- Se apenas o fluxo 1 estiver em execução, então o fluxo atual 1. Quando o fluxo 2 estiver presente, mude para o fluxo 2 em um quadro-chave.
- Se o fluxo 2 for interrompido, mude para o fluxo 1 em um quadro-chave.
Eu não encontrei essa lógica no FFmpeg.
Observe que é ideal que todos os fluxos sejam idênticos ao alternar de um para o outro.
Vídeo: codec, largura, altura, FPS, distância do quadro-chave (GOP) e taxa de bits. Áudio: Codec, canais, frequência e taxa de bits.
FFmpeg é uma cadeia de filtros dependente de ordem que recebe entrada, modifica e produz saída. Você pode colocar imagens ou vídeos e imagens de saída ou vídeo. O áudio é semelhante ao que você pode colocar um codec, modificá-lo e despejá-lo no formato de áudio de sua escolha.
Você pode ter várias entradas e várias saídas. No caso de múltiplas entradas, estas podem ser alteradas para um único fluxo de saída.
Áudio e vídeo provenientes de diferentes fontes para criar uma saída.
ffmpeg -i video.input -i audio.input -[modifications] -output
Áudio e vídeo provenientes de uma fonte, mas indo para várias saídas. Eu cubro isso em um post no meu blog.
O FFmpeg é simples por design e não encontrei nada no código que possa suportar seu fluxo de trabalho. Não significa que eu não tenha sentido falta disso.
Eu sei que esta não é a resposta que você queria, no entanto, você pode adicionar código ao FFmpeg para suportar essa funcionalidade ou criar uma ferramenta para executar essa função fora do FFmpeg. Qualquer código criado também deve ter entrada neutra e suporte a RTSP, RTMP, MPEG-TS, RTP / SDP, HLS e um arquivo de loop. Como isso não resolve o seu problema, não tenho expectativa de receber sua recompensa de 50%.