2017-01-26 33 views
0

我制作了一个轨道应用程序,可以将实时视频流传输到Facebook rtmp服务器并将其部署到AWS上。我用nginx作为web服务器。查看FFMpeg进程日志文件后遇到的主要问题是,有时FFmpeg进程的FPS开始下降。在某些情况下,它保持稳定在25 FPS,但在某些情况下,它仅在某些时候保持在25,然后开始下降,有时会下降到3-4 FPS,这在直播期间是不可接受的。由于FFMpeg过程相当繁重,我也想分享我的CPU信息。FPS在FFMPEG流媒体流程中从生产服务器下载到FB

CPU信息是:不稳定FPS

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的日志文件:https://drive.google.com/open?id=0B1gtp1iXJppkMkVCZEJjYWJrVTA

当FPS稳定,我也试着:https://drive.google.com/open?id=0B1gtp1iXJppkUndFamk4M0lRYzA

FFMPEG与稳定的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流程从同一台服务器进行流式处理吗?

感谢提前:)

+0

这个问题实际上与Rails没有任何关系,并且不属于Stack Overflow。这是一个超级用户的问题,但我仍然继续回答。 – Brad

回答

0

如果你只得到25 FPS,你的机器没有跟上。您已将输出设置为30 FPS,这就是Facebook Live的设置。

当您运行此脚本时,您的CPU规格与top显示的不相关。我敢打赌,你会看到你的loadavg高,CPU利用率最高。

此外,你的比特率对于720p视频来说是非常低的,但我猜你可以逃脱这个由于有一个单一的静态图像。您可能会考虑调高您的最大比特率,以适应关键帧。而且,您可以使用2秒的关键帧间隔,而不是1.

+0

OP的设置1秒KF间隔:'-g 30' – Mulvya

+0

@Mulvya良好的捕获,我错过了第一次阅读。谢谢。 – Brad

+0

所以,这基本上意味着升级CPU的规格可以帮助我解决这个问题? –