Падение FPS в процессах потоковой передачи FFMPEG на FB с производственного сервера

Падение FPS в процессах потоковой передачи FFMPEG на FB с производственного сервера

Я создал приложение rails, которое может транслировать живое видео на сервер rtmp facebook, и развернул его на 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. Причиной падения FPS, безусловно, стала неэффективность ЦП при кодировании видео, поскольку такое кодирование довольно тяжелое.

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

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

Связанный контент