我如何在 VPS 上使用 FFmpeg 构建稳定的 24/7 YouTube 直播(无需 SaaS)
发布: (2025年12月29日 GMT+8 03:38)
2 min read
原文: Dev.to
Source: Dev.to
挑战
流媒体最初可以工作,但 YouTube 反复显示 “未收到足够的视频”。观众出现卡顿,起初看起来像网络问题——但其实不是。
根本原因
在 VPS 上,FFmpeg 持续使用约 98–100 % 的 CPU。CPU 达到 100 % 时:
- 编码变慢
- 时间戳漂移
- 比特率不稳定
- 有时 YouTube 收到 0 kbps
该流媒体是 CPU 受限,而非带宽受限。
技术修复
目标是将 CPU 使用率安全保持在约 60 % 以下。我对 FFmpeg 进行了如下调优:
- 使用更快的预设
-preset superfast - 应用可预测的比特率控制
-b:v 2000k -maxrate 2000k -bufsize 4000k - 30 fps 的关键帧间隔
-g 60 -keyint_min 60 - 必要时进行缩放
-vf scale=1280:-2
最终工作命令(简化版)
ffmpeg -re -stream_loop -1 -i video.mp4 \
-vf scale=1280:-2 \
-c:v libx264 -preset superfast -profile:v high \
-b:v 2000k -maxrate 2000k -bufsize 4000k \
-g 60 -keyint_min 60 -r 30 -pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://a.rtmp.youtube.com/live2/STREAM_KEY
CPU 使用率降至约 50–60 %,流媒体稳定在 优秀健康 状态。
关键要点
- CPU 负载直接影响直播的稳定性。
我为何构建此项目
我想要一个可靠的 24/7 流媒体,而不受 SaaS 成本限制。由于我已经维护服务器,自己搭建更合适——而且这也成为一次跨越流媒体、DevOps 和系统可靠性的绝佳工程实践。