找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 104793|回复: 1

FFmpeg循环推流脚本

[复制链接]
发表于 2022-12-13 23:02:04 | 显示全部楼层 |阅读模式
<div><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">撸了个FFmpeg的循环推流脚本,你的VPS除了吃灰以外还能24小时不间断直播视频。自己用的脚本,单纯分享一下,如有问题自行解决。</span></span></p><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">需要配合screen运行:</span></span></p><pre class="prettyprint" style="box-sizing: border-box; overflow: auto; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 12px; line-height: 20px; font-family: &quot;courier new&quot;; padding: 10px 15px; margin-top: 20px; margin-bottom: 20px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background-color: rgb(39, 40, 34); border-width: initial; border-style: none; border-color: initial; border-radius: 4px; max-height: 637px;"><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">yum </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">y install screen</span></pre><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">开个新窗口:</span></span></p><pre class="prettyprint" style="box-sizing: border-box; overflow: auto; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 12px; line-height: 20px; font-family: &quot;courier new&quot;; padding: 10px 15px; margin-top: 20px; margin-bottom: 20px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background-color: rgb(39, 40, 34); border-width: initial; border-style: none; border-color: initial; border-radius: 4px; max-height: 637px;"><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">screen </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">S stream</span></pre><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">功能:</span></span></p><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-size: 15px; color: rgb(85, 85, 85); font-family: moonbridge;">1&#46;目前支持循环推流mp4格式的视频,注意视频文件的名字不能含有空格或其他特殊符号。</span></p><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">2&#46;视频加水印,水印位置默认在右上角。</span></span></p><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">完整代码如下:</span></span></p><pre class="prettyprint" style="box-sizing: border-box; overflow: auto; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 12px; line-height: 20px; font-family: &quot;courier new&quot;; padding: 10px 15px; margin-top: 20px; margin-bottom: 20px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background-color: rgb(39, 40, 34); border-width: initial; border-style: none; border-color: initial; border-radius: 4px; max-height: 637px;"><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#!/bin/bash</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
PATH</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">/bin:/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">sbin</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">/usr/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">/usr/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">sbin</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">/usr/</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">local</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">/usr/</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">local</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">sbin</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:~/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">export</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> PATH
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#=================================================================#</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#   System Required: CentOS7 X86_64                               #</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#   Description: FFmpeg Stream Media Server                       #</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#   Author: LALA </span><qq1062951199 style="box-sizing: border-box;"><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">                                   #</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#   Website: https://www&#46;lala&#46;im                                  #</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">#=================================================================#</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 颜色选择</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
red</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">'\033[0;31m'</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
green</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">'\033[0;32m'</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
yellow</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">'\033[0;33m'</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
font</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"\033[0m"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
ffmpeg_install</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">(){</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 安装FFMPEG</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
read </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">p </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"你的机器内是否已经安装过FFmpeg4&#46;x?安装FFmpeg才能正常推流,是否现在安装FFmpeg?(yes/no):"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="typ" style="box-sizing: border-box; color: rgb(166, 226, 46);">Choose</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">if</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">[</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $Choose </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"yes"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">];</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">then</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        yum </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">y install wget
        wget </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">--</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">no</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">check</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">certificate https</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);">//www&#46;johnvansickle&#46;com/ffmpeg/old-releases/ffmpeg-4&#46;0&#46;3-64bit-static&#46;tar&#46;xz</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        tar </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">xJf ffmpeg</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">4&#46;0</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&#46;</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">3</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">64bit</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">static</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&#46;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">tar</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&#46;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">xz
        cd ffmpeg</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">4&#46;0</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&#46;</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">3</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">64bit</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">static</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        mv ffmpeg </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">usr</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&amp;&amp;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> mv ffprobe </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">usr</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&amp;&amp;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> mv qt</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">faststart </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">usr</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">&amp;&amp;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> mv ffmpeg</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">10bit</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">usr</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">/</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">bin
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">fi</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">if</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">[</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $Choose </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"no"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">]</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">then</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
    echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${yellow} 你选择不安装FFmpeg,请确定你的机器内已经自行安装过FFmpeg,否则程序无法正常工作! ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
    sleep </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">2</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">fi</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">}</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
stream_start</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">(){</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 定义推流地址和推流码</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
read </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">p </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"输入你的推流地址和推流码(rtmp协议):"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> rtmp
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 判断用户输入的地址是否合法</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">if</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">[[</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $rtmp </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=~</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"rtmp://"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">]];</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">then</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${green} 推流地址输入正确,程序将进行下一步操作&#46; ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
          sleep </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">2</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">else</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">  
          echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${red} 你输入的地址不合法,请重新运行程序并输入! ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
          </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">exit</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">1</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">fi</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 定义视频存放目录</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
read </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">p </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"输入你的视频存放目录 (格式仅支持mp4,并且要绝对路径,例如/opt/video):"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> folder
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 判断是否需要添加水印</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
read </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">p </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"是否需要为视频添加水印?水印位置默认在右上方,需要较好CPU支持(yes/no):"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> watermark
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">if</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">[</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $watermark </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"yes"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">];</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">then</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        read </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">p </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"输入你的水印图片存放绝对路径,例如/opt/image/watermark&#46;jpg (格式支持jpg/png/bmp):"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> image
        echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${yellow} 添加水印完成,程序将开始推流&#46; ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 循环</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">while</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">true</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">do</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                cd $folder
                </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">for</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> video </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">in</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">(</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">ls </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">*&#46;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">mp4</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">)</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">do</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                ffmpeg </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">re </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">i </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"$video"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">i </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"$image"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">filter_complex overlay</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">W</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">w</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">5</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">5</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">c</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">v libx264 </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">c</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">a aac </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">b</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">a </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">192k</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">strict </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">2</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">f flv $</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">{</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">rtmp</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">}</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">done</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">done</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">fi</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">if</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">[</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $watermark </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">=</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"no"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">]</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">then</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
    echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${yellow} 你选择不添加水印,程序将开始推流&#46; ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
    </span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 循环</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">while</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">true</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">do</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                cd $folder
                </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">for</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> video </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">in</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> $</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">(</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">ls </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">*&#46;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">mp4</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">)</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">do</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                ffmpeg </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">re </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">i </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"$video"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">c</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">v copy </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">c</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">a aac </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">b</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">:</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">a </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">192k</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">strict </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">2</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">f flv $</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">{</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">rtmp</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">}</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
                </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">done</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">done</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">fi</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">}</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 停止推流</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
stream_stop</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">(){</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        screen </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">S stream </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">X quit
        killall ffmpeg
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">}</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 开始菜单设置</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${yellow} CentOS7 X86_64 FFmpeg无人值守循环推流 For LALA&#46;IM ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${red} 请确定此脚本目前是在screen窗口内运行的! ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${green} 1&#46;安装FFmpeg (机器要安装FFmpeg才能正常推流) ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${green} 2&#46;开始无人值守循环推流 ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${green} 3&#46;停止推流 ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
start_menu</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">(){</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
    read </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">p </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"请输入数字(1-3),选择你要进行的操作:"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> num
    </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">case</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"$num"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);"> </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">in</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">1</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">)</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        ffmpeg_install
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">;;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">2</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">)</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        stream_start
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">;;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="lit" style="box-sizing: border-box; color: rgb(174, 129, 255);">3</span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">)</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        stream_stop
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">;;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">*)</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        echo </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">-</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">e </span><span class="str" style="box-sizing: border-box; color: rgb(230, 219, 116);">"${red} 请输入正确的数字 (1-3) ${font}"</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">;;</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
    </span><span class="kwd" style="box-sizing: border-box; color: rgb(249, 38, 89);">esac</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
        </span><span class="pun" style="box-sizing: border-box; color: rgb(248, 248, 242);">}</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
</span><span class="com" style="box-sizing: border-box; color: rgb(147, 161, 161);"># 运行开始菜单</span><span class="pln" style="box-sizing: border-box; color: rgb(102, 217, 239);">
start_menu</span></qq1062951199></pre><p style="box-sizing: border-box; margin-bottom: 20px; overflow-wrap: break-word; background-color: rgb(255, 255, 255);"><span style="font-family:moonbridge;color:#555555;"><span style="font-size: 15px;">效果:</span></span></p></div><div><span style="color:#555555;"></span></div><div> </div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

发表于 2023-2-16 16:14:42 | 显示全部楼层
学习一下 循环推流脚本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|腾飞在线 ( 冀ICP备05002530号 )

GMT+8, 2026-2-13 08:20 , Processed in 0.056191 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表