FPS lässt FFMPEG-Streaming-Prozesse vom Produktionsserver auf FB fallen

557
Aakash Gupta

Ich habe eine Rails-App erstellt, mit der Live-Videos auf Facebook RTMP-Server übertragen und auf AWS bereitgestellt werden können. Ich habe Nginx als Webserver verwendet. Das Hauptproblem, dem ich nach dem Anzeigen von Protokolldateien von FFMpeg-Prozessen begegne, ist, dass der FPS des FFmpeg-Prozesses manchmal zu fallen beginnt. In einigen Fällen bleibt es bei 25 FPS stabil, in einigen Fällen bleibt es jedoch nur für einige Zeit bei 25, danach sinkt es und fällt manchmal sogar auf 3-4 FPS, was während des Live-Streamings nicht akzeptabel ist. Da der FFMpeg-Prozess ziemlich umfangreich ist, möchte ich auch meine CPU-Informationen weitergeben.

CPU-Informationen sind:

cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz stepping : 2 microcode : 0x25 cpu MHz : 2400.070 cache size : 30720 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm xsaveopt fsgsbase bmi1 avx2 smep bmi2 erms invpcid bogomips : 4800.14 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:

FFMPEG-Protokolldatei mit instabilen fps: https://drive.google.com/open?id=0B1gtp1iXJppkUndFamk4M0lRYzA

FFMPEG-Protokolldatei mit stabilen fps: https://drive.google.com/open?id=0B1gtp1iXJppkMkVCZEJjYWJrVTA

Als FPS stabil war, habe ich auch versucht, einen anderen parallelen FFMpeg-Prozess von demselben Server aus auszuführen, was dazu führte, dass FPS beide Prozesse auf 13-14 FPS löste.

Ich verwende derzeit diesen FFMPEG-Befehl:

ffmpeg -loop 1 -re -y -f image2 -i "image_path" -i "audio_path.aac" -acodec copy -bsf:a aac_adtstoasc -pix_fmt yuv420p -profile:v high -s 1280x720 -vb 400k -maxrate 400k -minrate 400k -bufsize 600k -deinterlace -vcodec libx264 -preset veryfast -g 30 -r 30 -t 14400 -strict -2 -f flv "rtmp_server_link"

Ich stehe nie vor diesem Problem, wenn ich versuche, mithilfe der App auf meinem localhost zu einem FB zu streamen.

Meine Fragen sind also:

  1. Was kann der Grund für diesen FPS-Rückgang sein?
  2. Kann das Upscaling des Produktionsservers mir helfen, dieses Problem zu beheben?
  3. Kann ich mehrere FFMpeg-Prozesse für das Streaming von demselben Server ohne Leistungseinbußen ausführen?

Danke im Voraus :)

1

1 Antwort auf die Frage

0
Aakash Gupta
  1. Der Grund für den FPS-Drop war sicherlich die Ineffizienz der CPU zur Codierung von Videos, da diese Codierung ziemlich umfangreich ist.

  2. Ja, ein Upgrade des Produktionsservers mit mehr CPU-Kernen half mir, das Problem zu beheben.

  3. Das hängt von der Art der Prozesse ab, die gleichzeitig ausgeführt werden. Wenn wir ein komplettes Video neu codieren, ist es ziemlich schwer. Wenn wir jedoch versuchen, nur den Videocontainer zu ändern oder einen anderen Prozess zu verwenden, der das Kopieren des Videostreams verwendet, ist er im Vergleich zu anderen etwas leicht.