环境准备
- Linux
- FFMPEG
- 宝塔面板
注:宝塔面板只是为了可视化操作比较方便,可有可无
安装宝塔面板
在宝塔官网
https://www.bt.cn/new/index.html
使用自己对应系统的一键脚本进行安装。也可以使用官方提供的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
更新安装包列表apt update
使用apt安装 apt install ffmpeg -y
要验证安装,请使用以下ffmpeg -version
命令,该命令显示FFmpeg版本:
脚本文件编写
- 新建目录用于存放脚本文件
mkdir cron && cd cron
- 新建脚本文件
vim transf.sh
#!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 "${flag}" ];then
echo -e "[$(date "+%Y-%m-%d %H:%M:%S %u %Z")] exit"
exit
fi
echo "" > ${namelist}
echo "" > ${m3u8list}
# echo "" > ${reslist}
echo -e "[$(date "+%Y-%m-%d %H:%M:%S %u %Z")]"
find ${maindir} -type f |grep -F ".mp4" > ${namelist}
touch ${flag}
find ${maindir} -type f |grep -F ".m3u8" > ${m3u8list}
mp4num=`cat ${namelist}|wc -l`
for ((i=1;i<=${mp4num};i++))
do
mp4tmpname=`cat ${namelist} |sed -n ${i}p |awk -F ".mp4" '{print $1}'`
mp4name=`echo ${mp4tmpname} |sed -e 's|&|-|g' |sed -e 's| |-|g' | sed -e "s|'| i|g"`
temp_local=`echo ${mp4tmpname} |awk -F "/" '{print $(NF-1)}'`
end_name=`echo ${mp4name} |awk -F "/" '{print $NF}'`
temp_num=`cat ${m3u8list} |grep -F "${mp4name}" |wc -l`
temp_num1=`cat ${m3u8list} |grep -F "${mp4tmpname}" |wc -l`
if [ ${temp_num1} == 0 -a ${temp_num} == 0 ];then
echo -e "[$(date "+%Y-%m-%d %H:%M:%S %u %Z")] ${mp4tmpname}.mp4 >> ${mp4name}.mp4" >> ${reslist}
mv "${mp4tmpname}.mp4" "${mp4name}.mp4"
ffmpeg -i "${mp4name}.mp4" -c:v libx264 -hls_time 10 -hls_list_size 0 -c:a aac -strict -2 -f hls "${mp4name}.m3u8"
fi
done
chown -R www:www ${maindir}
rm -rf ${flag}
- 创建子文件夹存放相关日志文件
mkdir conf
配置定时任务
使用宝塔面板
脚本内容:
bash /www/wwwroot/nas/cron/transfer.sh &>> /www/wwwroot/nas/cron/conf/log
- 使用crontab创建定时任务
终端输入$ crontab -e
选择vim编辑器*/2 * * * * bash /www/wwwroot/nas/cron/transfer.sh &>> /www/wwwroot/nas/cron/conf/log
至此整个脚本自动化流程创建完毕