You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下ffplay窗口后台运行时如何避免直播流播放延迟

Ubuntu下ffplay窗口后台运行时如何避免直播流播放延迟

我之前也碰到过一模一样的问题,Ubuntu 22.04的GNOME窗口管理器确实会给后台窗口对应的进程降低CPU优先级,这对低延迟的直播流播放来说简直是噩梦。给你几个亲测有效的解决办法,按需尝试:

方法1:强制提升ffplay的进程优先级

直接在启动ffplay时就给它设置更高的优先级,绕开系统的自动调整:

sudo nice -n -10 ffplay -f live_flv -fast -fflags nobuffer -flags low_delay \
    -strict experimental -vf "setpts=N/30/TB" -an -noframedrop \
    -i rtmp://localhost:1935/live

这里的-n -10是设置优先级值(范围是-20到19,数值越小优先级越高),用sudo是因为普通用户没法设置负数的nice值。如果ffplay已经在运行了,也可以临时调整它的优先级:

  1. 先找到ffplay的进程ID:ps aux | grep ffplay
  2. 用renice调整:sudo renice -n -10 -p <你的ffplay进程ID>

方法2:用systemd-run托管ffplay进程

这个方式会让ffplay脱离窗口管理器的优先级控制,稳定性更强:

systemd-run --user --scope -p Nice=-10 ffplay -f live_flv -fast -fflags nobuffer -flags low_delay \
    -strict experimental -vf "setpts=N/30/TB" -an -noframedrop \
    -i rtmp://localhost:1935/live

systemd的scope会保证进程的优先级不受窗口前后台状态的影响,很适合直播这种对稳定性要求高的场景。

方法3:给ffplay指定固定的CPU线程数

有时候后台延迟是因为ffplay没用到足够的CPU核心,强制指定线程数可以让它在后台也能抢到足够的资源:
在你的原命令里加上-threads <你的CPU核心数>,比如CPU是4核心就加-threads 4:

ffplay -f live_flv -fast -fflags nobuffer -flags low_delay \
    -strict experimental -vf "setpts=N/30/TB" -an -noframedrop \
    -threads 4 -i rtmp://localhost:1935/live

这个可以和方法1结合使用,效果更好。

方法4:在GNOME中设置后台进程例外

如果你用的是默认的GNOME桌面,可以通过GNOME Tweaks给ffplay开“后门”,让它后台时不被降优先级:

  1. 先安装GNOME Tweaks:sudo apt install gnome-tweaks
  2. 打开Tweaks,找到「Windows」或者「Performance」选项卡(不同版本位置可能略有不同)
  3. 找到「Background process priority」相关的设置,将/usr/bin/ffplay添加到例外列表中

你可以先从方法1开始试,操作最简单见效最快;如果还是有问题,再试试systemd-run的方式,这个是最稳定的方案。

备注:内容来源于stack exchange,提问作者ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 12:18:05