Hohe CPU-Auslastung mit FFMPEG, das den Video-Codec von HLS kopiert

Umgebucht von Superuser: https://superuser.com/questions/1340574/ffmpeg-copy-hls-high-cpu-usage

Ich habe eine Reihe von Batch-Skripten (Windows 10), um eine „sofortige Wiedergabe“ für einige (11) HLS-Streams mit FFMPEG zu erstellen. Wenn alles funktioniert, verbraucht jede Instanz weniger als 1 % CPU. Das Problem, das ich habe, ist, dass FFMPEG regelmäßig hängt und nicht weiterschleift. In diesem Fall springt die Instanz auf 10–15 % CPU-Auslastung.

Als ich dieses Problem zum ersten Mal hatte, habe ich meine Grafikkartentreiber und die FFMPEG-Version aktualisiert, und das hat eine Weile funktioniert, aber das Problem ist wieder aufgetreten. Ich bin davon ausgegangen, dass die Grafikkarte defekt ist. Ich habe jetzt einen brandneuen Computer (Precision 7520 mit Xeon E3-1535M v6, Quadro M2200 und 32 GB ECC RAM) und das Problem besteht weiterhin. Ich habe keine Ahnung, was die Ursache ist. Ich habe versucht, FFMPEG erneut zu aktualisieren, ohne Erfolg.

Wenn jemand eine Lösung hat, wäre das die beste; Wenn Sie jedoch eine Möglichkeit kennen, die Prozessorauslastung zu überwachen und ffmpeg automatisch zu beenden, wenn es länger als 10 Sekunden anhält, wäre dies eine akzeptable Lösung.

Das Recorder-Skript lautet wie folgt:

Set Event=%1 Set CamName=%4 ::SegLength is normally 30 to 60 seconds Set SegLength=%2 Set BasePath=%3

mkdir "%BasePath%\%Event%\%CamName%\" for /f %%i in ('yt-dl PATH_TO_master.m3u8 -f best --get-url') do set url="%%i"

:beg Set "FileName=%CamName%.%TIME::=-%.mp4" ffmpeg -n -i %url% -t %SegLength% -c:v copy -c:a copy -f mp4 "%BasePath%\%Event%\%CamName%\%FileName%" goto :beg

Antworten (1)

Ich habe zu einer 32-Bit-Binärdatei gewechselt und das Problem ist verschwunden.