网上有各种无人直播的方案,都是说躺着就能赚钱,就能实现睡后收入,云云,但是要做无人直播着实需要有点技术才行,作为技术开发的我,看了看网上的教程,就想尝试尝试,一不小心还尝试成功了,下面说说我的方法。
需有条件
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
刷新页面 即可 立即解锁 本站全部文章