2017-01-26 57 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的規格可以幫助我解決這個問題? –