Skalierungsanwendung zur Videodekodierung mit ffmpeg

Skalierungsanwendung zur Videodekodierung mit ffmpeg

Ich erstelle eine Anwendung, um mehrere IP-Kamera-Streams (RTSP) zu lesen und verschiedene Machine-Learning-Algorithmen in Echtzeit darauf auszuführen. Für jeden Kamera-Stream

  1. Ich starte einen ffmpeg-Prozess, der die RTSP-Streams kontinuierlich in Frames aufteilt und als Bilder (JPEG) speichert. Die Streams verwenden H.264-Kodierung. Ich nehme 1 Frame pro Sekunde als Ausgabe.
  2. Den Modellen entsprechende Nachrichtenwarteschlangen erhalten die Nachricht mit dem Speicherort der Datei.
  3. Modelle greifen immer wieder auf die Datei zu und ziehen Schlussfolgerungen

Das Problem, mit dem ich konfrontiert bin, ist die CPU-Auslastung durch den ffmpeg-Decodierungsprozess. Für Echtzeit-Inferenz ohne Frameverlust muss ich meinen Server für jeweils zwei Kamera-Streams um einen Kern aufrüsten. Gibt es eine Optimierung, die ich für ffmpeg übersehen habe?

Ich verwende einen Intel Xeon Gold-Prozessor mit Ubuntu 18.04 OS

verwandte Informationen