butterfly771

Live Video Room rtmp

Dec 15th, 2022 (edited)
3,496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.15 KB | None | 0 0
  1. #=================================================================#
  2. #   System Required: CentOS7 X86_64                               #
  3. #   Description: FFmpeg Stream Media Server                       #
  4. #   Author: LALA ,AK ,黄河, Butterfly                             #
  5. #   Website: https://www.lala.im                                  #
  6. #   Bilibili: https://www.bilibili.com/video/BV1P14y1T7BY         #
  7. #=================================================================#
  8.  
  9. # 颜色选择
  10. red='\033[0;31m'
  11. green='\033[0;32m'
  12. yellow='\033[0;33m'
  13. font="\033[0m"
  14.  
  15. ffmpeg_install(){
  16. # 安装FFMPEG
  17. read -p "你的机器内是否已经安装过FFmpeg4.x?安装FFmpeg才能正常推流,是否现在安装FFmpeg?(yes/no):" Choose
  18. if [ $Choose = "yes" ];then
  19.         yum -y install wget
  20.         wget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xz
  21.         tar -xJf ffmpeg-4.0.3-64bit-static.tar.xz
  22.         cd ffmpeg-4.0.3-64bit-static
  23.         mv ffmpeg /usr/bin && mv ffprobe /usr/bin && mv qt-faststart /usr/bin && mv ffmpeg-10bit /usr/bin
  24. fi
  25. if [ $Choose = "no" ]
  26. then
  27.     echo -e "${yellow} 你选择不安装FFmpeg,请确定你的机器内已经自行安装过FFmpeg,否则程序无法正常工作! ${font}"
  28.     sleep 2
  29. fi
  30.         }
  31.  
  32. stream_start(){
  33. # 定义推流地址和推流码
  34. echo "开始设置推流,使用默认选项直接回车"
  35. read -p "※ 输入你的推流地址和推流码(rtmp协议): " rtmp
  36.  
  37. # 判断用户输入的地址是否合法
  38. if [[ $rtmp =~ "rtmp://" ]];then
  39.         echo -e "${green} 推流地址输入正确,程序将进行下一步操作. ${font}"
  40.         sleep 2
  41.         else
  42.         echo -e "${red} 你输入的地址不合法,请重新运行程序并输入! ${font}"
  43.         exit 1
  44. fi
  45.  
  46. # 定义视频存放目录
  47. read -p "输入你的视频存放目录(格式仅支持mp4,并且要绝对路径,默认/root/livehouse/video): " folder
  48. if [ ! $folder ];then
  49.         folder="/root/livehouse/video"
  50. fi
  51.  
  52. # 定义视频和音频码率
  53. read -p "请输入视频推流码率(默认1500k): " bv
  54. read -p "请输入音频推流码率(默认92k): " ba
  55. if [ ! $bv ];then
  56.         bv="1500k"
  57. fi
  58. if [ ! $ba ];then
  59.         ba="92k"
  60. fi
  61.  
  62. # 判断是否需要添加水印
  63. read -p "是否需要为视频添加水印?水印位置默认在右上方,需要较好CPU支持. 默认不加,添加请输入y:" watermark
  64. if [ $watermark = "y" ];then
  65.         read -p "输入你的水印图片存放绝对路径,例如/opt/image/watermark.jpg (格式支持jpg/png/bmp):" image
  66.         echo -e "${yellow} 添加水印完成,程序将开始推流. ${font}"
  67.         # 循环
  68.         while true
  69.         do
  70.                 cd $folder
  71.                 video=$(find ./ -type f | shuf -n 1)
  72.                 ffmpeg -re -i "$video" -i "$image" -filter_complex overlay=W-w-5:5 -preset ultrafast -vcodec libx264 -g 60 -b:v ${bv} -c:a aac -b:a ${ba} -strict -2 -f flv ${rtmp}
  73.         done
  74. else
  75.     echo -e "${yellow} 你选择不添加水印,程序将开始推流. ${font}"
  76.     # 循环
  77.         while true
  78.         do
  79.                 cd $folder
  80.                 video=$(find ./ -type f | shuf -n 1)
  81.                 ffmpeg -re -i "$video" -preset ultrafast -vcodec libx264 -g 60 -b:v ${bv} -c:a aac -b:a ${ba} -strict -2 -f flv ${rtmp}
  82.         done
  83. fi
  84.         }
  85.  
  86. # 停止推流
  87. stream_stop(){
  88.         screen -S stream -X quit
  89.         killall ffmpeg
  90.         }
  91.  
  92. # 开始菜单设置
  93. echo -e "${yellow} FFmpeg无人值守循环推流 For LALA.IM ${font}"
  94. echo -e "${red} 请确定此脚本目前是在screen窗口内运行的! ${font}"
  95. echo -e "${green} 1.安装FFmpeg (机器要安装FFmpeg才能正常推流) ${font}"
  96. echo -e "${green} 2.开始无人值守循环推流 ${font}"
  97. echo -e "${green} 3.停止推流 ${font}"
  98. start_menu(){
  99.     read -p "请输入数字(1-3),选择你要进行的操作:" num
  100.     case "$num" in
  101.         1)
  102.         ffmpeg_install
  103.         ;;
  104.         2)
  105.         stream_start
  106.         ;;
  107.         3)
  108.         stream_stop
  109.         ;;
  110.         *)
  111.         echo -e "${red} 请输入正确的数字 (1-3) ${font}"
  112.         ;;
  113.     esac
  114.         }
  115.  
  116. # 运行开始菜单
  117. start_menu
Advertisement
Add Comment
Please, Sign In to add comment