利用吃灰小鸡搭建一个7 * 24小时的直播间

 最近刷B站,经常见到那种直播几百小时的直播间,于是我也想搞一个。

1.准备一台服务器,配置1h1g就够了,实测美国小鸡推流的直播也不卡,可能是带宽大的缘故吧
服务器系统随便装一个就可以,实测CentOS、Debian这俩系统都可以,乌班图没有试,应该也行。


看了一下占用的内存也不大(可能是我推流的视频小)。测试的小鸡是2h1g的配置

2.一键安装脚本

  1. curl -fsSL get.kplayer.net | bash
复制代码

显示以下信息就说明安装成功了


3.上传视频并修改配置文件

在root文件夹下新建一个mp4文件夹,上传需要直播的视频素材
然后打开/root/kplayer这个目录。
新建一个config.json的文件,里面内容如下:
  1. {
  2. "version": "2.0.0",
  3. "resource": {
  4.     "lists": [
  5.         "/root/mp4/视频文件名.mp4"
  6.     ]
  7. },
  8. "play": {
  9.     "play_model": "loop"
  10. },
  11. "output": {
  12.     "lists": [
  13.         {
  14.             "path": "B站服务器地址和串流密钥"
  15.         }
  16.     ]
  17. }
  18. }
复制代码


打开个b站我的直播,将服务器地址和串流密钥复制下来,放到上面path里。
ps:服务器地址和串流密钥连在一起中间无需空格和逗号

4.B站直播信息


5.运行推流脚本

  1. cd kplayer
  2. ./kplayer play start --daemon
复制代码


接下来返回你的直播间,等待一段时间就会发现直播已经开始了。

kplayer官方文档:docs.kplayer.net

我搭建的测试直播间:http://live.bilibili.com/26361562 

切换视频的话就
"lists": [
        "/root/mp4/视频文件名.mp4",
        "/root/mp4/视频文件名1.mp4",
        "/root/mp4/视频文件名2.mp4",
    ]
播放的代码如下
"play": {
    "play_model": "代码"
},
代码:
loop        列表顺序播放并且播放完最后一个资源后重新至起始位置循环       
random        随机播放,列表随机播放       
queue        队列模式,该模式下播放完资源列表后不会直接结束将会阻塞等待新的资源加入

其他的你可以看看他的官方文档

本文内容转载自:全球主机论坛

 

昨天看见论坛大佬写了个用kplayer推流的教程,我运行时直播一段时间后会报错

所以在网上找了下 看见用ffmpeg好像更好

我搭建的测试直播间:http://live.bilibili.com/2504721

github地址https://github.com/x-dr/bilive24h



安装ffmpeg


  1. wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
  2. tar -xJf ffmpeg-release-amd64-static.tar.xz
  3. cp -r ffmpeg-6.0-amd64-static /usr/local/ffmpeg

复制代码


在~/.bashrc文件添加一行
  1. export PATH=$PATH:/usr/local/ffmpeg
复制代码

然后运行
  1. source .bashrc
复制代码



推流脚本


  1. # 颜色选择
  2. red='\033[0;31m'
  3. green='\033[0;32m'
  4. yellow='\033[0;33m'
  5. font="\033[0m"


  6. stream_start(){
  7. # 定义推流地址和推流码
  8. echo -e "${yellow} 开始设置推流,使用默认选项直接回车 ${font}"
  9. echo -e "${yellow} ps:推流地址是b站我的直播,服务器地址和串流密钥连在一起中间无需空格和逗号 ${font}"
  10. read -p "※ 输入你的服务器地址和串流密钥(rtmp协议): " rtmp

  11. # 判断用户输入的地址是否合法
  12. if [[ $rtmp =~ "rtmp://" ]];then
  13.         echo -e "${green} 推流地址输入正确,程序将进行下一步操作. ${font}"
  14.         sleep 2
  15.         else
  16.         echo -e "${red} 你输入的地址不合法,请重新运行程序并输入! ${font}"
  17.         exit 1
  18. fi

  19. # 定义视频存放目录
  20. echo -e "${yellow} 脚本会推流所设置目录下的所有视频 ${font}"
  21. read -p "输入你的视频存放目录(并且要绝对路径,默认/video): " folder
  22. if [ ! $folder ];then
  23.         folder="/video"
  24. fi

  25. # 定义视频和音频码率
  26. read -p "请输入视频推流码率(默认4000k): " bv
  27. read -p "请输入音频推流码率(默认192k): " ba
  28. if [ ! $bv ];then
  29.         bv="4000k"
  30. fi
  31. if [ ! $ba ];then
  32.         ba="192k"
  33. fi

  34. # 判断是否需要添加水印
  35. read -p "是否需要为视频添加水印?水印位置默认在右上方,需要较好CPU支持. 默认不加,添加请输入y:" watermark
  36. if [ $watermark = "y" ];then
  37.         read -p "输入你的水印图片存放绝对路径,例如/opt/image/watermark.jpg (格式支持jpg/png/bmp):" image
  38.         echo -e "${yellow} 添加水印完成,程序将开始推流. ${font}"
  39.         # 循环
  40.         while true
  41.         do
  42.                 cd $folder
  43.                 video=$(find ./ -type f | shuf -n 1)
  44.                 ffmpeg -re -i "$video" -i "$image" -filter_complex overlay=W-w-5:5 -preset ultrafast  -g 25 -b:v ${bv} -c:a aac -b:a ${ba} -strict -2 -f flv ${rtmp}
  45.         done
  46. else
  47.     echo -e "${yellow} 你选择不添加水印,程序将开始推流. ${font}"
  48.     # 循环
  49.         while true
  50.         do
  51.                 cd $folder
  52.                 video=$(find ./ -type f | shuf -n 1)
  53.                 ffmpeg -re -i "$video" -preset ultrafast -vcodec libx264 -g 25 -b:v ${bv} -c:a aac -b:a ${ba} -strict -2 -f flv ${rtmp}
  54.         done
  55. fi
  56.         }

  57. # 停止推流
  58. stream_stop(){
  59.         screen -S bilive -X quit
  60.         }

  61. # 开始菜单设置
  62. echo -e "${yellow} FFmpeg无人值守循环推流 ${font}"
  63. echo -e "${red} 运行推流时请确定此脚本目前是在screen窗口内运行的! ${font}"
  64. echo -e "${red} 运行推流时若未在screen窗口内请先运行  screen -S bilive ${font}"
  65. echo -e "${green} 1.开始无人值守循环推流 ${font}"
  66. echo -e "${green} 2.停止推流 ${font}"
  67. start_menu(){
  68.     read -p "请输入数字(1-2),选择你要进行的操作:" num
  69.     case "$num" in
  70.         1)
  71.         stream_start
  72.         ;;
  73.         2)
  74.         stream_stop
  75.         ;;
  76.         *)
  77.         echo -e "${red} 请输入正确的数字 (1-2) ${font}"
  78.         ;;
  79.     esac
  80.         }

  81. # 运行开始菜单
  82. start_menu

复制代码
 
 

  本文内容转载自:全球主机论坛

发表评论

0 评论