FFMPEG 스트리밍 프로세스에서 프로덕션 서버에서 FB로의 FPS 저하

FFMPEG 스트리밍 프로세스에서 프로덕션 서버에서 FB로의 FPS 저하

저는 라이브 비디오를 Facebook rtmp 서버로 스트리밍하고 AWS에 배포할 수 있는 Rails 앱을 만들었습니다. 저는 nginx를 웹서버로 사용했습니다. FFMpeg 프로세스의 로그 파일을 본 후 직면하게 되는 주요 문제는 때때로 FFmpeg 프로세스의 FPS가 떨어지기 시작한다는 것입니다. 어떤 경우에는 25FPS로 안정적으로 유지되지만 어떤 경우에는 한동안만 25FPS로 유지되고 그 이후에는 떨어지기 시작하고 때로는 라이브 스트리밍 중에 허용되지 않는 3-4FPS까지 떨어지기도 합니다. FFMpeg 프로세스가 상당히 무거워서 CPU 정보도 공유하고 싶습니다.

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:

불안정한 fps가 포함된 FFMPEG 로그 파일:https://drive.google.com/open?id=0B1gtp1iXJppkUndFamk4M0lRYzA

안정적인 fps를 갖춘 FFMPEG 로그 파일:https://drive.google.com/open?id=0B1gtp1iXJppkMkVCZEJjYWJrVTA

FPS가 안정적일 때 동일한 서버에서 또 다른 병렬 FFMpeg 프로세스를 실행하려고 시도했는데 그 결과 두 프로세스 모두 FPS가 13-14FPS로 떨어졌습니다.

현재 이 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가 떨어지는 이유는 인코딩이 상당히 무거워 비디오를 인코딩하는 데 있어 CPU의 비효율성이 확실했기 때문입니다.

  2. 예, 더 많은 CPU 코어로 프로덕션 서버를 업그레이드하면 문제를 해결하는 데 도움이 되었습니다.

  3. 이는 동시에 실행되는 프로세스 유형에 따라 다릅니다. 전체 비디오를 다시 인코딩하면 꽤 무거워집니다. 그러나 비디오 컨테이너만 변경하거나 비디오 스트림 복사를 사용하는 kther 프로세스를 사용하려고 하면 다른 것에 비해 다소 가볍습니다.

관련 정보