Eu tenho um conjunto de scripts em lote (Windows 10) para criar um "replay instantâneo" para alguns (11) fluxos HLS usando o FFMPEG. Quando tudo está funcionando, cada instância usa menos de 1% da CPU. O problema que tenho é que o FFMPEG trava regularmente e não continua em loop. Quando isso acontece, a instância salta para 10 a 15% do uso da CPU.
A primeira vez que tive esse problema, atualizei os drivers da minha placa gráfica e a versão do FFMPEG e isso funcionou por um tempo, mas o problema voltou. Eu assumi que era a placa gráfica indo mal. Agora tenho um novo computador (Precision 7520 com Xeon E3-1535M v6, Quadro M2200 e 32GB de RAM ECC) e o problema persiste. Não tenho ideia de qual é a causa. Eu tentei atualizar o FFMPEG novamente sem sucesso.
Se alguém tiver uma correção que seria a melhor; no entanto, se você souber como monitorar o uso do processador e matar automaticamente o ffmpeg quando ele aumentar por mais de 10s, isso seria uma solução aceitável.
O script do registrador é o seguinte:
Set Event=%1
Set CamName=%4
::SegLength is normally 30 to 60 seconds
Set SegLength=%2
Set BasePath=%3
mkdir "% BasePath% \% Evento% \% CamName% \" para / f %% i em ('yt-dl PATH_TO_master.m3u8 -f melhor --get-url') defina url="%% i"
: implore
Defina "FileName =% CamName%.% TIME :: = -%. Mp4"
ffmpeg -n -i% url% -t% SegLength% -c: v cópia -c: uma cópia -f mp4 "% BasePath% \% Evento% \% CamName% \% FileName%"
goto: implorar