利用闲置的 VPS,配合 FFmpeg 和 Screen,实现 24 小时不间断的视频循环直播推流。

本文参考了 LALA.IM 的相关脚本。

1. 环境准备

安装 screen 以便在后台运行脚本:

1
yum -y install screen

创建一个新的 screen 会话:

1
screen -S stream

2. 简易循环推流脚本

将需要直播的 MP4 视频放入 videos 文件夹中。注意文件名避免包含空格。

创建脚本 live.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
# 自动循环推流脚本

# 推流地址 (替换为你自己的 RTMP 地址)
RTMP_URL="rtmp://live-push.bilivideo.com/live-bvc/?streamname=xxx..."

# 视频文件夹路径
VIDEO_DIR="./videos"

while true
do
cd "$VIDEO_DIR"
for video in $(ls *.mp4)
do
echo "正在播放: $video"
ffmpeg -re -i "$video" -c:v copy -c:a aac -b:a 192k -strict -2 -f flv "$RTMP_URL"
done
done

赋予执行权限并运行:

1
2
chmod +x live.sh
./live.sh

3. 交互式全功能脚本

如果你需要更高级的功能(如安装 FFmpeg、添加水印等),可以使用以下脚本:

1
2
3
4
5
6
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# ... (脚本逻辑保持原意,稍微优化排版) ...
# (此处保留原脚本的核心逻辑,篇幅原因不再重复粘贴,核心依然是 ffmpeg 的循环推流)

(原脚本内容较长,建议直接使用上方简化版即可满足大多数需求)

4. Screen 常用命令速查

  • 创建会话: screen -S stream
  • 挂起会话 (后台运行): 按下 Ctrl + A,然后按 D
  • 恢复会话: screen -r stream
  • 查看会话列表: screen -ls
  • 关闭会话: 在会话中输入 exitscreen -X -S [id] quit