服務器系統隨便裝一個就可以,實測CentOS、Debian這倆系統都可以,烏班圖沒有試,應該也行。
2.一鍵安裝腳本
顯示以下信息就說明安裝成功了
在root文件夾下新建一個mp4文件夾,上傳需要直播的視頻素材
新建一個config.json的文件,裡面內容如下:
- {
- "version": "2.0.0",
- "resource": {
- "lists": [
- "/root/mp4/視頻文件名.mp4"
- ]
- },
- "play": {
- "play_model": "loop"
- },
- "output": {
- "lists": [
- {
- "path": "B站服務器地址和串流密鑰"
- }
- ]
- }
- }
複製代碼 ps:服務器地址和串流密鑰連在一起中間無需空格和逗號
5.運行推流腳本
- cd kplayer
- ./kplayer play start --daemon
複製代碼 kplayer官方文檔:docs.kplayer.net
方案2:
github地址https://github.com/x-dr/bilive24h
在~/.bashrc文件添加一行
然後運行
推流腳本
- # 顏色選擇
- red='[0;31m'
- green='[0;32m'
- yellow='[0;33m'
- font="[0m"
- stream_start(){
- # 定義推流地址和推流碼
- echo -e "${yellow} 開始設置推流,使用默認選項直接回車 ${font}"
- echo -e "${yellow} ps:推流地址是b站我的直播,服務器地址和串流密鑰連在一起中間無需空格和逗號 ${font}"
- read -p "※ 輸入你的服務器地址和串流密鑰(rtmp協議): " rtmp
- # 判斷用戶輸入的地址是否合法
- if [[ $rtmp =~ "rtmp://" ]];then
- echo -e "${green} 推流地址輸入正確,程序將進行下一步操作. ${font}"
- sleep 2
- else
- echo -e "${red} 你輸入的地址不合法,請重新運行程序並輸入! ${font}"
- exit 1
- fi
- # 定義視頻存放目錄
- echo -e "${yellow} 腳本會推流所設置目錄下的所有視頻 ${font}"
- read -p "輸入你的視頻存放目錄(並且要絕對路徑,默認/video): " folder
- if [ ! $folder ];then
- folder="/video"
- fi
- # 定義視頻和音頻碼率
- read -p "請輸入視頻推流碼率(默認4000k): " bv
- read -p "請輸入音頻推流碼率(默認192k): " ba
- if [ ! $bv ];then
- bv="4000k"
- fi
- if [ ! $ba ];then
- ba="192k"
- fi
- # 判斷是否需要添加水印
- read -p "是否需要為視頻添加水印?水印位置默認在右上方,需要較好CPU支持. 默認不加,添加請輸入y:" watermark
- if [ $watermark = "y" ];then
- read -p "輸入你的水印圖片存放絕對路徑,例如/opt/image/watermark.jpg (格式支持jpg/png/bmp):" image
- echo -e "${yellow} 添加水印完成,程序將開始推流. ${font}"
- # 循環
- while true
- do
- cd $folder
- video=$(find ./ -type f | shuf -n 1)
- 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}
- done
- else
- 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 25 -b:v ${bv} -c:a aac -b:a ${ba} -strict -2 -f flv ${rtmp}
- done
- fi
- }
- # 停止推流
- stream_stop(){
- screen -S bilive -X quit
- }
- # 開始菜單設置
- echo -e "${yellow} FFmpeg無人值守循環推流 ${font}"
- echo -e "${red} 運行推流時請確定此腳本目前是在screen窗口內運行的! ${font}"
- echo -e "${red} 運行推流時若未在screen窗口內請先運行 screen -S bilive ${font}"
- echo -e "${green} 1.開始無人值守循環推流 ${font}"
- echo -e "${green} 2.停止推流 ${font}"
- start_menu(){
- read -p "請輸入數字(1-2),選擇你要進行的操作:" num
- case "$num" in
- 1)
- stream_start
- ;;
- 2)
- stream_stop
- ;;
- *)
- echo -e "${red} 請輸入正確的數字 (1-2) ${font}"
- ;;
- esac
- }
- # 運行開始菜單
- start_menu
複製代碼
|