FPS cai nos processos de streaming do FFMPEG para o FB do servidor de produção

1

Eu fiz um aplicativo rails que pode transmitir vídeos ao vivo para o servidor facebook rtmp e implantá-lo na AWS. Eu usei nginx como servidor web. O principal problema que estou encontrando depois de visualizar arquivos de log de processos FFMpeg é que às vezes o processo FPS do FFmpeg começa a cair. Em alguns casos, ele permanece estável em 25 FPS mas, em alguns casos, permanece em 25 apenas por algum tempo, e depois disso ele começa a cair e às vezes cai para 3-4 FPS, o que é inaceitável durante a transmissão ao vivo. Como o processo FFMpeg é bastante pesado, eu também gostaria de compartilhar minhas informações da CPU também.

A informação da CPU é:

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:

Arquivo de registro FFMPEG com fps instáveis: link

Arquivo de registro FFMPEG com fps estáveis: link

Quando o FPS era estável, também tentei executar outro processo FFMpeg paralelo a partir do mesmo servidor, o que resultou na queda de ambos os processos para 13-14 FPS.

Atualmente estou 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"

Eu nunca enfrento este problema quando tento transmitir para o FB usando o app no meu host local.

Então, minhas perguntas são:

  1. Qual pode ser o motivo dessa queda de FPS?
  2. O servidor de produção de upscaling pode me ajudar a corrigir esse problema?
  3. Posso executar vários processos FFMpeg para streaming no mesmo servidor sem perda de desempenho?

Agradecemos antecipadamente:)

    
por Aakash Gupta 26.01.2017 / 17:21

1 resposta

0
  1. O motivo da queda do FPS foi certamente a ineficiência da CPU para codificar vídeo, pois essa codificação é bem pesada.

  2. Sim, a atualização do servidor de produção com mais núcleos de CPU me ajudou a corrigir o problema.

  3. Isso depende do tipo de processo que está sendo executado simultaneamente. Se estamos recodificando o vídeo completo, então é bem pesado. Mas se tentarmos alterar apenas o contêiner de vídeo ou usar qualquer outro processo que use a cópia do fluxo de vídeo, ele será um pouco mais leve que o outro.

por 10.11.2017 / 08:07