当前位置: 首页 > 知识库问答 >
问题:

ffmpeg编码器流问题

丁钟展
2023-03-14

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

-vcodec libx264-预设超高速-crf 25-x264opts keyint=60:min keyint=60:scenecut=-1-bufsize 7000k-b:v 6000k-maxrate 6300k-muxrate 6000k-s 1920x1080-格式yuv420p-g 60-sn-c:a aac-b:a 384k-ar 44100

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

提前谢谢

共有1个答案

濮阳旺
2023-03-14

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

 类似资料:
  • 我正在尝试捕获和编码音频数据,我正在使用FFMPEG AAC编码音频,为了捕获PCM数据,我使用ALSA,捕获部分在我的情况下工作,但是AAC编码器不工作。 我试图播放test.aac文件使用 ffplaytest.aac 但它包含很多噪音。 附加aac编码器代码: 这里,请忽略DUMP_TEST标志,我已经启用了。 有人能告诉我什么是问题吗? 谢谢,哈希尔

  • 我正在使用FFMpeg将一个WAV文件分割成MP3以便在HTTP直播流中使用。我正在使用以下命令: ffmpeg-i input.wav-c:a libmp3lame-b:a 128k-map 0:0-f segment-segment_time 10-segment_list outputlist.m3u8-segment_format mp3'output%03d.mp3' 流是工作的,但我得

  • 因此,我最近开始使用ffmpeg下载实时流媒体视频,但我面临的问题是,下载的视频会阻塞很多,特别是对于长视频(如2小时)而言。 我当前用于下载流文件的命令:- ffmpeg-i"https://link. m3u8"-c复制output.mkv 此命令在35分钟长的视频中运行良好[没有任何卡滞问题],但在2小时长的视频中失败 当我试图使用x264 lib命令编码2小时长的视频时,它还显示了“无效长

  • 我的密码编码器有问题, 我的代码: 错误: 应用程序启动失败 描述: org.spring.service.UserService中构造函数的参数0需要找不到类型org.springframework.security.crypto.password.PasswordEncoder的bean。 行动: 考虑定义“org”类型的bean。springframework。安全加密。暗语配置中的Pass

  • 我正在尝试将各种文件类型转换为mp4,以便使用ffmpeg显示,但我不断收到错误: 打开输出流#0.0的编码器时出错-可能是错误的参数,如比特率、速率、宽度或高度 另一件看起来很重要的事情是: [libx264@0x93caef0]检测到ffmpeg默认设置已损坏 [libx264@0x93caef0]使用编码预设(例如-vpre-medium) [libx264@0x93caef0]预设用法:-

  • 最近,我们正在将java构建作业从serverA迁移到serverB,java源代码(包含中文字符)在使用Ant的原始serverA上编译良好( ),但是,当我们将相同的代码签出到新的serverB并运行相同的Ant脚本时,出现了编码错误,如“用于编码GBK的Unmappable character”(Unmappable character for encoding GBK)。(JDK版本相同)