ffmpeg编码器流媒体问题

时间:2017-06-12 18:25:56

标签: ffmpeg

我正在尝试在linux上构建ffmpeg编码器。我开始使用定制的服务器Dual 1366 2.6 Ghz Xeon CPU(6个内核),带16 GB RAM,Ubuntu 16.04最小安装。使用h264和aac构建ffmpeg。我正在使用实时源OTA通道并使用以下参数对它们进行编码/流式传输

-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:a aac -b:384k -ar 44100

我能够成功地使用mpegts。我的问题从第5流开始。服务器可以处理四个流,一旦我引入第5个流,我就开始在输出中看到打嗝。使用顶级查看我的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.任何改进我的选择的建议。我尝试过超快预设,但输出质量是不可接受的。

提前致谢

1 个答案:

答案 0 :(得分:0)

你真的排除了CPU吗?确保检查每个核心的运行方式。如果没有核心达到100%,那么你最有可能的候选者是带宽:要么你的主板无法处理所有来回传输的数据,要么你的内存。用更快的版本交换内存是一个简单的测试,应该给你答案。