2017-06-12 180 views
0

我想在linux上構建ffmpeg編碼器。我開始使用定製的服務器雙核1366 2.6 Ghz Xeon CPU(6核),配備16 GB RAM和Ubuntu 16.04最小安裝。用h264和aac構建ffmpeg。我正在採取直播來源的OTA頻道,並使用以下參數對它們進行編碼/流式傳輸:ffmpeg編碼器流問題

-vcodec libx264 -preset superfast -crf 25 -x264opts keyint = 60:min-keyint = 60:scenecut = -1 -bufsize 7000k -b: v 6000k -maxrate 6300k -muxrate 6000k -s 1920x1080 -format yuv420p -g 60 -sn -c:aac -b:a 384k -ar 44100

而且我能夠使用mpegts成功udp。我的問題始於第5流。服務器可以處理四個流,並且一旦我介紹第五個流,我就開始在輸出中看到打嗝。使用top查看我的cpu使用情況,我仍然看到只有65%到75%的使用率,偶爾會有80%的使用率。內存使用情況在可接受的參數內。所以我想知道top是不是給了我準確的CPU使用率,或者是什麼與ffmpeg不對。服務器在1 Gbps網絡中隔離udp輸入/輸出。

我決定提高CPU功耗,並安裝了兩個3.5 Ghz CPU(6核心),認爲它可能是CPU時鐘。令我驚訝的是,結果並沒有什麼不同。所以現在我想知道是否有一些內置的限制,我在1080p處理時遇到了限制。如果我將分辨率更改爲720p,則可以處理8個流,但不能接受720。 我的目標是每個服務器10個1080p流。 所以我的問題是 1.如果我使用四主板和CPU計數到4(6或8核心),我會得到10 1080p流?有沒有任何理論上的最大我可以去每臺機器ffmpeg? 2.核心更重要還是時鐘更重要? 3.任何改善我的選項的建議。我嘗試過超快速預設,但輸出質量不可接受。

在此先感謝

回答

0

您真的排除了CPU嗎?確保檢查每個核心的運行方式。如果沒有核心達到100%,那麼最有可能的候選者就是帶寬:或者你的主板無法處理所有來回數據或內存。用更快的版本交換內存是一個簡單的測試,應該給你答案。