1114 字
6 分钟
闲置VPS直播:一键搭建教程,轻松实现低成本直播
2023-03-10

闲置 VPS 直播:一键搭建教程#

推荐 CentOS 7/Ubuntu/Debian 系统,包含 FFmpeg 安装、推流配置及视频文件管理,助力低成本直播实现。

一、系统准备#

  • 推荐系统: CentOS 7、Ubuntu 18、Debian 9 或以上版本。
  • 更新系统:
    • CentOS: yum update -y && yum install vim screen -y
    • Ubuntu/Debian: apt update -y && apt install vim screen -y

二、安装 FFmpeg#

参考 FFmpeg

三、准备服务器文件#

  1. stream.sh 脚本: 该脚本用于自动化直播推流过程。
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 颜色选择
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
font="\033[0m"
ffmpeg_install(){
# 安装FFMPEG
read -p "你的机器内是否已经安装过FFmpeg4.x?安装FFmpeg才能正常推流,是否现在安装FFmpeg?(yes/no):" Choose
if [ $Choose = "yes" ];then
yum -y install wget
wget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xz
tar -xJf ffmpeg-4.0.3-64bit-static.tar.xz
cd ffmpeg-4.0.3-64bit-static
mv ffmpeg /usr/bin && mv ffprobe /usr/bin && mv qt-faststart /usr/bin && mv ffmpeg-10bit /usr/bin
fi
if [ $Choose = "no" ]
then
echo -e "${yellow} 你选择不安装FFmpeg,请确定你的机器内已经自行安装过FFmpeg,否则程序无法正常工作! ${font}"
sleep 2
fi
}
stream_start(){
# 定义推流地址和推流码
read -p "输入你的推流地址和推流码(rtmp协议):" rtmp
# 判断用户输入的地址是否合法
if [[ $rtmp =~ "rtmp://" ]];then
echo -e "${green} 推流地址输入正确,程序将进行下一步操作. ${font}"
sleep 2
else
echo -e "${red} 你输入的地址不合法,请重新运行程序并输入! ${font}"
exit 1
fi
# 定义视频存放目录
read -p "输入你的视频存放目录 (格式仅支持mp4,并且要绝对路径,例如/opt/video):" folder
# 判断是否需要添加水印
read -p "是否需要为视频添加水印?水印位置默认在右上方,需要较好CPU支持(yes/no):" watermark
if [ $watermark = "yes" ];then
read -p "输入你的水印图片存放绝对路径,例如/opt/image/watermark.jpg (格式支持jpg/png/bmp):" image
echo -e "${yellow} 添加水印完成,程序将开始推流. ${font}"
# 循环
while true
do
cd $folder
for video in $(ls *.mp4)
do
ffmpeg -re -i "$video" -i "$image" -filter_complex overlay=W-w-5:5 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv ${rtmp}
done
done
fi
if [ $watermark = "no" ]
then
echo -e "${yellow} 你选择不添加水印,程序将开始推流. ${font}"
# 循环
while true
do
cd $folder
for video in $(ls *.mp4)
do
ffmpeg -re -i "$video" -c:v copy -c:a aac -b:a 192k -strict -2 -f flv ${rtmp}
done
done
fi
}
# 停止推流
stream_stop(){
screen -S stream -X quit
killall ffmpeg
}
# 开始菜单设置
echo -e "${yellow} CentOS7 X86_64 FFmpeg无人值守循环推流 For LALA.IM ${font}"
echo -e "${red} 请确定此脚本目前是在screen窗口内运行的! ${font}"
echo -e "${green} 1.安装FFmpeg (机器要安装FFmpeg才能正常推流) ${font}"
echo -e "${green} 2.开始无人值守循环推流 ${font}"
echo -e "${green} 3.停止推流 ${font}"
start_menu(){
read -p "请输入数字(1-3),选择你要进行的操作:" num
case "$num" in
1)
ffmpeg_install
;;
2)
stream_start
;;
3)
stream_stop
;;
*)
echo -e "${red} 请输入正确的数字 (1-3) ${font}"
;;
esac
}
# 运行开始菜单
start_menu
* **功能:**
* 安装 FFmpeg (如果未安装)。
* 配置推流地址和码流。
* 判断是否需要添加水印。
* 循环推送视频文件。
* **关键参数:**
* `rtmp`: 推流地址和码流 (例如:`rtmp://xxxxx.xxxxx.xxx/live/xxxx-xxxx`)。
* `folder`: 视频文件存放目录 (绝对路径)。
* `watermark`: 是否添加水印 (yes/no)。
* `image`: 水印图片路径 (绝对路径)。

2. 视频文件上传: 将要推流的视频文件上传到服务器,例如 /root 目录。 stream.sh 脚本支持自动轮播多个 MP4 文件。

四、开启直播#

  1. SSH 连接: 使用 SSH 客户端连接到 VPS。
  2. 创建 Screen 会话: screen -S stream (如果未安装 Screen,先安装:yum -y install screen)
  3. 运行脚本: 在 Screen 会话中执行 bash stream.sh
  4. 配置参数: 按照脚本提示,输入推流地址、视频目录、是否添加水印等参数。
  5. 推流地址: 在直播后台查找推流地址,格式类似于 rtmp://your-server-url/app/stream

五、停止直播#

  1. 进入 Screen 会话: screen -r stream
  2. 运行脚本: bash stream.sh
  3. 选择停止推流: 在菜单中选择选项 3。

六、简化命令 (单个视频)#

如果推流的视频文件只有一个,可以使用以下命令简化推流过程:

ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f flv rtmp://your-server-url/app/stream

七、资源占用#

  • CPU 占用: 一个 1 核 1 GB 的 VPS 推流进程大约占 20% CPU。
  • 内存占用: 推流进程大约占用 40MB 以上的内存。
  • 推流数量: 理论上一个 VPS 可以推流 4 个直播间。
闲置VPS直播:一键搭建教程,轻松实现低成本直播
https://blog.wlens.top/posts/闲置vps挂直播/
作者
Lao Wang
发布于
2023-03-10
许可协议
CC BY-NC-SA 4.0