跳转至

🎁 [主标题]

封面图

本期要点: [这里简述视频的核心价值,吸引读者往下看]。本教程手把手带你通过验证,建议收藏!



🚀 极简主义!VPS 纯图片轮播 + 音乐 24h 直播搭建指南

放弃繁琐的代码渲染,回归本质。本教程教你通过最原生的 Bash 脚本 + FFmpeg,打造一个坚如磐石的 24 小时图片轮播直播间。随时拖拽上传新图片,无缝热更新!

🛠️ 第一步:极简环境配置

🛠️ 一键开启 1G Swap

# 1. 创建一个 1G 大小的交换文件
dd if=/dev/zero of=/swapfile bs=1M count=1024

# 2. 设置正确的安全权限(防止其他用户读取)
chmod 600 /swapfile

# 3. 把这个文件格式化为 Swap 专属格式
mkswap /swapfile

# 4. 立即激活 Swap
swapon /swapfile

# 5. 写入系统配置文件,保证重启后 Swap 依然自动生效
echo '/swapfile none swap sw 0 0' >> /etc/fstab

# 6. 查看当前的内存和 Swap 状态,确认是否成功
free -m

安装 FFmpeg 和 screen(仅需这两个!)

apt install -y ffmpeg screen

📂 第二步:创建目录与上传素材

规范文件夹,方便日后通过 WinSCP 管理。

mkdir -p /root/live/images
cd /root/live

【WinSCP 拖拽时间】 请将你的素材上传到指定位置:

  1. 🖼️ 轮播图片: 把你做好的所有图片(支持 .jpg.png)全部拖入 /root/live/images/ 目录下。(提示:最好用数字 01, 02, 03... 命名,它会按顺序播放)
  2. 🎵 背景音乐:bgm.mp3 拖入 /root/live/ 目录下。

⚙️ 第三步:编写核心脚本

直接在 VPS 终端内复制运行以下命令,我们将创建两个脚本:一个负责“换图”,一个负责“推流”。

1. 换图引擎 (loop_images.sh)

这个轻量级脚本会每隔 5 分钟(300秒),从你的图库里抓取一张图替换为 current.jpg

cat << 'EOF' > /root/live/loop_images.sh
#!/bin/bash

# 只要不断开,就一直循环
while true; do
    # 遍历 images 文件夹下的所有文件
    for img in /root/live/images/*; do
        # 防错机制:如果文件夹是空的,休息 10 秒再试
        if [ ! -f "$img" ]; then
            echo "未找到图片,等待上传..."
            sleep 10
            break
        fi

        # 将当前图片覆盖为推流读取的文件
        cp -f "$img" /root/live/current.jpg
        echo "[$(date +'%H:%M:%S')] 切换图片 -> $(basename "$img")"

        # 停留时间:300秒 = 5分钟
        sleep 300
    done
done
EOF

chmod +x /root/live/loop_images.sh

2. 推流引擎 (run_stream.sh)

读取 current.jpgbgm.mp3,并利用 -update 1 参数实现画面的无缝刷新,推送到 YouTube。

cat << 'EOF' > /root/live/run_stream.sh
#!/bin/bash

# ⚠️ 记得确保下面这行是你真实的 YouTube 直播码
STREAM_URL="rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY"

# 移除废弃参数,使用标准的无限循环模式
ffmpeg -re -stream_loop -1 -i /root/live/bgm.mp3 \
-loop 1 -i /root/live/current.jpg \
-c:v libx264 -preset veryfast -b:v 2500k -maxrate 2500k -bufsize 5000k \
-r 30 -pix_fmt yuv420p -g 60 \
-c:a aac -b:a 128k -ar 44100 \
-f flv "$STREAM_URL"
EOF

chmod +x /root/live/run_stream.sh

第2版本

cat << 'EOF' > /root/live/run_stream.sh
#!/bin/bash

# ⚠️ 请确保这里填入了你 YouTube 后台获取的 RTMP 地址和直播码
STREAM_URL="rtmp://a.rtmp.youtube.com/live2/YOUR_STREAM_KEY"

# 1080P 静态图极速推流指令
ffmpeg -re -stream_loop -1 -i /root/live/bgm.mp3 \
-loop 1 -i /root/live/current.jpg \
-c:v libx264 -preset ultrafast -tune stillimage -b:v 1500k -maxrate 1500k -bufsize 3000k \
-r 1 -g 2 -pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 44100 \
-f flv "$STREAM_URL"
EOF

# 赋予执行权限
chmod +x /root/live/run_stream.sh

第3版本

#!/bin/bash

STREAM_URL="rtmp://a.rtmp.youtube.com/live2/ar0w-zhz2-xp07-f5pc-033a"

# 优化后的 1080P 静态图极速推流指令
ffmpeg \
-re -stream_loop -1 -i /root/live/bgm.mp3 \
-loop 1 -framerate 10 -i /root/live/current.jpg \
-c:v libx264 -preset ultrafast -tune stillimage \
-b:v 500k -maxrate 500k -bufsize 1000k \
-g 20 -pix_fmt yuv420p \
-threads 1 \
-c:a aac -b:a 128k -ar 44100 \
-f flv "$STREAM_URL"

第4版本

#!/bin/bash

# ⚠️ 请确保这里填入了你 YouTube 后台获取的 RTMP 地址和直播码
STREAM_URL="rtmp://a.rtmp.youtube.com/live2/ar0w-zhz2-xp07-f5pc-033a"

# 优化后的 1080P 静态图极速推流指令 (包含奇数分辨率自动修复)
ffmpeg \
-re -stream_loop -1 -i /root/live/bgm.mp3 \
-loop 1 -framerate 10 -i /root/live/current.jpg \
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" \
-c:v libx264 -preset ultrafast -tune stillimage \
-b:v 500k -maxrate 500k -bufsize 1000k \
-g 20 -pix_fmt yuv420p \
-threads 1 \
-c:a aac -b:a 128k -ar 44100 \
-f flv "$STREAM_URL"


🎬 第四步:双核启动!

一切就绪,我们用 screen 把它们挂在后台,即使关掉电脑它们也会默默打工。

启动【换图引擎】:

# 创建后台窗口
/root/live/loop_images.sh &
# 运行换图脚本
/root/live/loop_images.sh
# 看到打印出时间后,按 Ctrl + A,松开再按 D 隐藏到后台
screen -S swapper bash /root/live/loop_images.sh

启动【推流引擎】:

# 创建后台窗口
screen -S live_stream
# 运行推流脚本
/root/live/run_stream.sh
# 看到滚动的代码后,按 Ctrl + A,松开再按 D 隐藏到后台
screen -S stream bash /root/live/run_stream.sh

关闭推流命令:

killall ffmpeg

关闭screen会话命令:

killall screen

WinSCP下载地址:https://winscp.net/eng/download.php

💡 运营维护贴士 (热更新)

这套架构最大的优势在于无需重启,所见即所得

  • ➕ 增加新图: 直接用 WinSCP 把新做好的图片丢进 /root/live/images/ 文件夹即可,下一轮循环它就会自动加入播放。
  • ➖ 删除旧图: 直接在文件夹里删掉对应的图片即可,永远不会报错。
  • ⏱️ 修改时间: 如果觉得 5 分钟太长,用 WinSCP 打开 /root/live/loop_images.sh,把最下面的 sleep 300 改成你想要的秒数,然后重启一下换图引擎即可。