【开发技巧】利用空闲虚拟主机做无人直播,实现睡后收入?

开发技巧 2023年4月13日 2.82K

网上有各种无人直播的方案,都是说躺着就能赚钱,就能实现睡后收入,云云,但是要做无人直播着实需要有点技术才行,作为技术开发的我,看了看网上的教程,就想尝试尝试,一不小心还尝试成功了,下面说说我的方法。

需有条件

1、B站推流,需要你实名认证,获取到rtmp推流地址(选B站的原因,门槛低)

2、一台虚拟主机,我用的腾讯云最低配置的,新用户购买的那种。

技术方案

1、lnmp一键安装包,主要用到里面的 nginx,当然你也可以单独安装。

2、服务器中安装ffmpeg(这个是主角)

实现方案

lnmp加载nginx的rtmp模块,由于lnmp默认是不带的,因此需要先安装。

找到lnmp安装包里面的lnmp.conf,找到 Nginx_Modules_Options=” 单引号中加上–add-module=/root/nginx-rtmp-module,保存。

cd /usr/local/src
git clone https://github.com/arut/nginx-rtmp-module

再执行 upgrade.sh nginx 升级一下nginx就行了,至于nginx-rtmp如何使用,https://github.com/arut/nginx-rtmp-module 这个上面都有教程。

验证是否成功执行 nginx -V 出现nginx-rtmp-module即代表成功。

configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=/usr/local/src/lnmp1.8-full/src/openssl-1.1.1k --with-openssl-opt='enable-weak-ssl-ciphers' --add-module=/usr/local/src/nginx-rtmp-module

ffmpeg安装

我用的编译安装,你也可以直接 yum install ffmpeg

# wget http://www.ffmpeg.org/releases/ffmpeg-4.3.3.tar.gz
# tar -zxvf ffmpeg-4.3.3.tar.gz
# cd ffmpeg-4.3.3
# ./configure --prefix=/usr/local/ffmpeg
# make && make install

验证是否安装成功,有版本信息代表安装成功。

ffmpeg -version

B站开通直播

记住服务器地址,串流密钥,房间标题,这几个要用。

nginx配置

在nginx的conf目录下创建文件夹rtmp,下面创建 push.conf文件,写入代码

push rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_53523234232123123435_754332413266765&key=d107sdaeqdaeq12112r34dsdsfsd0aa&schedule=rtmp&pflag=1; #特别注意分号不能丢。

服务器地址:rtmp://live-push.bilivideo.com/live-bvc/
串流密钥:?streamname=live_53523234232123123435_754332413266765&key=d107sdaeqdaeq12112r34dsdsfsd0aa&schedule=rtmp&pflag=1

nginx.conf中添加如下代码

rtmp{
server{
listen 1935;
chunk_size 4000;
application live {
live on;
record off;
include rtmp/*.conf;
}
}
}

ffmpeg推送

ffmpeg -re -stream_loop -1 -i "demo.mp4" -c copy -f flv "rtmp://127.0.0.1:1935/live/陪伴学习"

其中 ffmpeg 是命令,

-re -stream_loop -1 是循环视频的指令,

demo.mp4 是你视频的地址,用绝对路径

如果你想直播文件夹内所有视频就改成“/root/video”,

-c copy -f flv 是视频参数

后边的就是推流地址,这里是用推流到自己服务器通过nginx转发到B站,也可以直接用B站的地址,不使用nginx。

最后可以用”nohup+命令+&”挂在后台,这样就可以一直推流啦。

碰到的问题

推送过去的视频有卡顿的情况,猜测有可能是我带宽的原因,速度不够快,视频我已经压缩到了24M,尝试了10M内的视频,依然卡,不过整体还行。确实能实现无人直播。

睡后收入问题?

首先没几个人看,平台没啥补贴,再次服务器的流量费用也不少,这就是你的成本,想靠这个睡后收入,还是洗洗睡吧。

不过你可以在视频上挂个二维码,将流量转移到小程序上,或者别的地方,通过小程序平台补贴啥的获取点收入,这个还是有可能,不过量小。

关于封号问题,得你们自己测试了,我测试的时间短,暂时没封。

我的直播地址:http://live.bilibili.com/27575750 大家凑合体验体验,直播关掉后,就先加个QQ群:66357155,通知我在开通。

推送脚本

看到别人一个推送脚本,先放这吧,说明一下我没测试,大家自己测试用。

#!/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
        video=$(find ./ -type f | shuf -n 1)
        ffmpeg -re -i "$video" -preset ultrafast -vcodec libx264 -g 60 -b:v 6000k -c:a aac -b:a 128k -strict -2 -f flv ${rtmp}
    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

 

扫码或搜索:PHP学习网 微信公众号

发送 T

刷新页面 即可 立即解锁 本站全部文章

PHP学习网-微信公众号
PHP学习网:站内收集的部分资源来源于网络,若侵犯了您的合法权益,请联系我们删除!
分享到:
赞(2)

文章评论

您需要之后才可以评论
2点赞 0评论 收藏 QQ分享 微博分享

PHP学习网

PHP学习网