FPS отбрасывает потоковые процессы FFMPEG на FB с рабочего сервера

511
Aakash Gupta

Я создал приложение rails, которое может транслировать живое видео на сервер Facebook RTMP, и развернул его на AWS. Я использовал nginx в качестве веб-сервера. Основная проблема, с которой я сталкиваюсь после просмотра файлов журнала процессов FFMpeg, заключается в том, что иногда FPS процесса FFmpeg начинает падать. В некоторых случаях он остается стабильным при 25 FPS, но в некоторых случаях он остается на 25 только в течение некоторого времени, и после этого он начинает падать, а иногда падает даже до 3-4 FPS, что недопустимо во время прямой трансляции. Поскольку процесс FFMpeg довольно тяжелый, я также хотел бы поделиться информацией о своем процессоре.

Информация о процессоре:

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 с нестабильным fps: https://drive.google.com/open?id=0B1gtp1iXJppkUndFamk4M0lRYzA

Файл журнала FFMPEG со стабильным fps: https://drive.google.com/open?id=0B1gtp1iXJppkMkVCZEJjYWJrVTA

Когда FPS был стабильным, я также пытался запустить другой параллельный процесс FFMpeg с того же сервера, что привело к падению FPS обоих процессов до 13-14 FPS.

В настоящее время я использую эту команду 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"

Я никогда не сталкиваюсь с этой проблемой, когда пытаюсь транслировать на FB с помощью приложения на моем локальном хосте.

Итак, мои вопросы:

  1. Что может быть причиной этого падения FPS?
  2. Может ли масштабирование производственного сервера помочь мне решить эту проблему?
  3. Могу ли я запустить несколько процессов FFMpeg для потоковой передачи с одного сервера без снижения производительности?

Заранее спасибо :)

1

1 ответ на вопрос

0
Aakash Gupta
  1. Причиной падения FPS была, конечно, неэффективность процессора для кодирования видео, так как эта кодировка довольно тяжелая.

  2. Да, обновление производственного сервера с использованием большего количества процессорных ядер помогло мне решить проблему.

  3. Это зависит от типа процессов, которые выполняются одновременно. Если мы перекодируем полное видео, то оно довольно тяжелое. Но если мы попытаемся изменить только контейнер видео или использовать какой-либо другой процесс, который использует копирование видеопотока, то это будет несколько легче по сравнению с другими.