Caída de FPS en los procesos de transmisión FFMPEG a FB desde el servidor de producción

Caída de FPS en los procesos de transmisión FFMPEG a FB desde el servidor de producción

Creé una aplicación Rails que puede transmitir videos en vivo al servidor rtmp de Facebook y la implementé en AWS. He utilizado nginx como servidor web. El principal problema que encuentro después de ver los archivos de registro de los procesos FFMpeg es que a veces el FPS del proceso FFmpeg comienza a disminuir. En algunos casos, permanece estable a 25 FPS, pero en otros casos, permanece en 25 solo por un tiempo, y luego comienza a caer y, a veces, cae incluso a 3-4 FPS, lo cual es inaceptable durante la transmisión en vivo. Como el proceso FFMpeg es bastante pesado, también me gustaría compartir la información de mi CPU.

La información de la CPU es:

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:

Archivo de registro FFMPEG con fps inestables:https://drive.google.com/open?id=0B1gtp1iXJppkUndFamk4M0lRYzA

Archivo de registro FFMPEG con fps estables:https://drive.google.com/open?id=0B1gtp1iXJppkMkVCZEJjYWJrVTA

Cuando FPS estaba estable, también intenté ejecutar otro proceso FFMpeg paralelo desde el mismo servidor, lo que resultó en una caída de FPS de ambos procesos a 13-14 FPS.

Actualmente estoy usando este comando FFMPEG:

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"

Nunca me enfrento a este problema cuando intento transmitir a FB usando la aplicación en mi host local.

Entonces, mis preguntas son:

  1. ¿Cuál puede ser el motivo de esta caída de FPS?
  2. ¿La ampliación del servidor de producción puede ayudarme a solucionar este problema?
  3. ¿Puedo ejecutar múltiples procesos FFMpeg para transmitir desde el mismo servidor sin que disminuya el rendimiento?

Gracias de antemano :)

Respuesta1

  1. La razón de la caída de FPS fue sin duda la ineficiencia de la CPU para codificar vídeo, ya que esta codificación es bastante pesada.

  2. Sí, actualizar el servidor de producción con más núcleos de CPU me ayudó a solucionar el problema.

  3. Eso depende del tipo de procesos que se estén ejecutando simultáneamente. Si recodificamos el vídeo completo, entonces es bastante pesado. Pero si intentamos cambiar solo el contenedor de video o usar cualquier otro proceso que use la copia de la transmisión de video, entonces es algo liviano en comparación con otros.

información relacionada