哔哩哔哩24小时直播
前提
- 有个直播账号
- 有个用于直播的服务器,我用的是一个树莓派,可以是云服务器,也可以是本地服务器
- 直播的内容
工具
- ffmpeg(推流工具,使用这个软件来推流视频)
- 服务器如树莓派(软件和直播内容运行在上面)
- 一个远程工具,如果是本地那直接插键盘鼠标显示器也不是不行
步骤
服务器正常配置好
创建一个文件夹来放推流脚本和要直播的视频
我的如下 live(大文件夹)
live.sh(这个是推流脚本) videos(这个是放视频的文件夹)
推流脚本如下,保存为live.sh
#!/bin/bash echo "LIXINGYU" ##补充完整下面的rtmp_link,就是你直播的链接加上推流吗 rtmp_link="rtmp://live-push.bilivideo.com/live-bvc/..........flag=1" ##下面的是你的推流视频的地址,写绝对地址,就是从根目录开始写,注意斜线别打成反的 vidfo_src="/home/user/live/videos" ##定义一个开始推流的函数 stream_start(){ echo "开始推流" while true do ##打开视频所在文件夹 cd $vidfo_src ##循环推流文件夹每个视频 for video_x in $(ls *.mp4) do ##为了节省占用,这里没有压缩直接推流的,所以文件夹放的视频码率要先自己压一遍,如果实时压制会比较消耗资源 ffmpeg -re -i "$video_x" -c:v copy -c:a aac -b:a 192k -strict -2 -f flv ${rtmp_link} done done } stream_stop(){ echo "停止推流" screen -S live -X quit killall ffmpeg } echo "1是开始推流" read -p "请输入数字1推流,2停止推流,选择你要进行的操作:" num case "$num" in 1) stream_start ;; 2) stream_stop ;; *) echo "输入错误" ;; esac }
安装screen
因为我们要退出终端,直接退出会结束当前终端任务
我们要使用screen创建后台任务一直推流,
安装screen,这个根据你的系统使用yum或者apt安装就完了
安装好试试能不能用
常用命令
创建一个名为live的窗口 screen -S live 查看当前运行的所有窗口 screen -ls 退出当前窗口按键如下 按下 CTRL+A 松开 按D
安装ffmpeg
- 这个是负责推流的软件
- 现在一些系统都默认带这个软件,所以安装前看看装没装
- 打一下ffmpeg提示找不到命令就没装,提示一大堆库和ffmpeg使用命令就是装了
- 使用apt或者yum安装就行,也可以去github找clone下来跑也行
开始推流
- 到live.sh文件的目录下
- 创建一个screen窗口
- 输入 screen -S live 回车(S一定要大写,窗口命名最好叫live,因为那个脚本文件里结束推流就是结束的名为live的窗口,如果你改了别的名字脚本就结束不了,你就需要自己关掉screen)
- 会出现一个新的窗口,就是你之前打的命令都没了,这时就进入了一个screen
- 输入 ./live.sh 回车
- 按照提示输入开始推流
- 按CTRL+A 然后按D把窗口放后台
- 这时回到了之前的窗口
- 可以使用screen -ls 看一下运行的窗口
- 再看看直播间ok不
- 可以关闭连接了
- 再运行一次live.sh根据提示可以关到直播
注意几点
- 因为我的树莓派性能有限,那个脚本推流中不会压缩码率,建议上传视频时自己压缩到想推流的码率,到网页哔哩哔哩投稿页面最底下有压缩工具箱,
- 如果不会自己关窗口的话,窗口创建就叫live,这样可以使用脚本直接关掉窗口,或者你重启服务器也能关掉
- 直播推流码率过大,会造成观众观看卡顿,没必要太大
- 如果是云服务器注意流量带宽的限制
- 使用ffmpeg压缩真的很消耗性能,具体固定码率推流可以自己搜一下ffmpeg用法