哔哩哔哩24小时直播

前提

  1. 有个直播账号
  2. 有个用于直播的服务器,我用的是一个树莓派,可以是云服务器,也可以是本地服务器
  3. 直播的内容

工具

  1. ffmpeg(推流工具,使用这个软件来推流视频)
  2. 服务器如树莓派(软件和直播内容运行在上面)
  3. 一个远程工具,如果是本地那直接插键盘鼠标显示器也不是不行

步骤

  1. 服务器正常配置好

  2. 创建一个文件夹来放推流脚本和要直播的视频

    我的如下 live(大文件夹)

    live.sh(这个是推流脚本) videos(这个是放视频的文件夹)

  3. 推流脚本如下,保存为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
    	}
    
  4. 安装screen

    1. 因为我们要退出终端,直接退出会结束当前终端任务

    2. 我们要使用screen创建后台任务一直推流,

    3. 安装screen,这个根据你的系统使用yum或者apt安装就完了

    4. 安装好试试能不能用

    5. 常用命令

      创建一个名为live的窗口 screen -S live 查看当前运行的所有窗口 screen -ls 退出当前窗口按键如下 按下 CTRL+A 松开 按D

  5. 安装ffmpeg

    1. 这个是负责推流的软件
    2. 现在一些系统都默认带这个软件,所以安装前看看装没装
    3. 打一下ffmpeg提示找不到命令就没装,提示一大堆库和ffmpeg使用命令就是装了
    4. 使用apt或者yum安装就行,也可以去github找clone下来跑也行
  6. 开始推流

    1. 到live.sh文件的目录下
    2. 创建一个screen窗口
    3. 输入 screen -S live 回车(S一定要大写,窗口命名最好叫live,因为那个脚本文件里结束推流就是结束的名为live的窗口,如果你改了别的名字脚本就结束不了,你就需要自己关掉screen)
    4. 会出现一个新的窗口,就是你之前打的命令都没了,这时就进入了一个screen
    5. 输入 ./live.sh 回车
    6. 按照提示输入开始推流
    7. 按CTRL+A 然后按D把窗口放后台
    8. 这时回到了之前的窗口
    9. 可以使用screen -ls 看一下运行的窗口
    10. 再看看直播间ok不
    11. 可以关闭连接了
    12. 再运行一次live.sh根据提示可以关到直播

注意几点

  1. 因为我的树莓派性能有限,那个脚本推流中不会压缩码率,建议上传视频时自己压缩到想推流的码率,到网页哔哩哔哩投稿页面最底下有压缩工具箱,
  2. 如果不会自己关窗口的话,窗口创建就叫live,这样可以使用脚本直接关掉窗口,或者你重启服务器也能关掉
  3. 直播推流码率过大,会造成观众观看卡顿,没必要太大
  4. 如果是云服务器注意流量带宽的限制
  5. 使用ffmpeg压缩真的很消耗性能,具体固定码率推流可以自己搜一下ffmpeg用法