定时任务自动转码mp4 to m3u8

yaoyue 最后更新于 1 天前 17 次阅读 761 字


环境准备

  • Linux
  • FFMPEG
  • 宝塔面板

注:宝塔面板只是为了可视化操作比较方便,可有可无

安装宝塔面板

  1. 在宝塔官网<code>https://www.bt.cn/new/index.html</code> 使用自己对应系统的一键脚本进行安装。

    image.png

  2. 也可以使用官方提供的linux下万能一键安装脚本,接着根据提示安装完成。

    if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh 
    https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

安装FFMPEG

更新安装包列表<code>apt update</code>
使用apt安装 <code>apt install ffmpeg -y</code>

要验证安装,请使用以下<code>ffmpeg -version</code>命令,该命令显示FFmpeg版本:

image.png


脚本文件编写

  • 新建目录用于存放脚本文件
    <code>mkdir cron && cd cron</code>
  • 新建脚本文件
    <code>vim transf.sh</code>
#!bin/bash
namelist=/www/wwwroot/nas/cron/conf/namelist.conf
m3u8list=/www/wwwroot/nas/cron/conf/m3u8list.conf
reslist=/www/wwwroot/nas/cron/conf/reslist.conf
flag=/www/wwwroot/nas/cron/conf/flag.conf
maindir=/www/wwwroot/nas
if [ -e &quot;${flag}&quot; ];then
echo -e &quot;[$(date &quot;+%Y-%m-%d %H:%M:%S %u %Z&quot;)] exit&quot;
exit
fi
echo &quot;&quot; &gt; ${namelist}
echo &quot;&quot; &gt; ${m3u8list}
# echo &quot;&quot; &gt; ${reslist}
echo -e &quot;[$(date &quot;+%Y-%m-%d %H:%M:%S %u %Z&quot;)]&quot;
find ${maindir} -type f |grep -F &quot;.mp4&quot; &gt; ${namelist}
touch ${flag}
find ${maindir} -type f |grep -F &quot;.m3u8&quot; &gt; ${m3u8list}
mp4num=&#x60;cat ${namelist}|wc -l&#x60;
for ((i=1;i&lt;=${mp4num};i++))
do

    mp4tmpname=&#x60;cat ${namelist} |sed -n ${i}p |awk -F &quot;.mp4&quot; &#039;{print $1}&#039;&#x60;
    mp4name=&#x60;echo ${mp4tmpname} |sed -e &#039;s|&amp;|-|g&#039; |sed -e &#039;s| |-|g&#039; | sed -e &quot;s|&#039;| i|g&quot;&#x60;
    temp_local=&#x60;echo ${mp4tmpname} |awk -F &quot;/&quot; &#039;{print $(NF-1)}&#039;&#x60;
    end_name=&#x60;echo ${mp4name} |awk -F &quot;/&quot; &#039;{print $NF}&#039;&#x60;
    temp_num=&#x60;cat ${m3u8list} |grep -F &quot;${mp4name}&quot; |wc -l&#x60;
    temp_num1=&#x60;cat ${m3u8list} |grep -F &quot;${mp4tmpname}&quot; |wc -l&#x60;
    if [ ${temp_num1} == 0 -a ${temp_num} == 0 ];then 

    echo -e &quot;[$(date &quot;+%Y-%m-%d %H:%M:%S %u %Z&quot;)] ${mp4tmpname}.mp4 &gt;&gt; ${mp4name}.mp4&quot; &gt;&gt; ${reslist}
    mv &quot;${mp4tmpname}.mp4&quot; &quot;${mp4name}.mp4&quot;
    ffmpeg -i &quot;${mp4name}.mp4&quot; -c:v libx264 -hls_time 10 -hls_list_size 0 -c:a aac -strict -2 -f hls &quot;${mp4name}.m3u8&quot;
    fi
done

chown -R www:www ${maindir}
rm -rf ${flag}
  • 创建子文件夹存放相关日志文件
    <code>mkdir conf</code>

配置定时任务

  • 使用宝塔面板

    image.png

    image.png

脚本内容:

<code>bash /www/wwwroot/nas/cron/transfer.sh &>> /www/wwwroot/nas/cron/conf/log</code>

  • 使用crontab创建定时任务
    终端输入 <code>$ crontab -e</code>
    选择vim编辑器
    <code>*/2 * * * * bash /www/wwwroot/nas/cron/transfer.sh &>> /www/wwwroot/nas/cron/conf/log</code>

至此整个脚本自动化流程创建完毕