Sei que o título ficou confuso, mas vou tentar dar um panorama do que quero fazer. De antemão, adianto que venho primeiro em busca de IDEIAS para meu problema!
Bem, eu estou tentando fazer um servidor em Python que utiliza Linux e FFMPEG pra fazer um certo tipo de gravação. Eu recebo os parâmetros via MQTT junto com a ordem de “start” das gravações, e o Python executa a gravação dessa forma:
async def command(*args):
process = await asyncio.create_subprocess_exec(*args, stdout=asyncio.subprocess.PIPE)
stdout, stderr = await process.communicate()
return stdout.decode() if process.returncode == 0 else stderr.decode()
def gravacao():
#código omitido
loop = asyncio.get_event_loop()
processes = asyncio.gather(*commands)
loop.run_until_complete(processes)
loop.close()
A minha dúvida é:
Imagine que, por algum motivo, meu script pare de rodar no servidor do cara. Automaticamente eu perco minhas conexões e tudo mais (tenho ciencia disso), mas como fazer com que o FFMPEG para de gravar (para ele não ficar infinitamente) depois que eu iniciar novamente meu script?
Quero dizer, imagine que ele receba a notificação e comece a gravar. Por algum motivo, o script caiu e dez segundos depois “reiniciou”. Nesse tempo, o FFMPEG está gravando e vai ficar até ser fechado manualmente (e isso é inviavel!).
Espero que tenha ficado claro, quero fazer o possível pra ajudar a me ajudarem!
Abraço a todos!