通过Shell计划任务执行ffmpeg自动切割mp4视频文件
2022-11-22 12:29:25
系统ubuntu
crontab -e 添加计划任务
*/1 * * * * sh /softwares/shellrun/CreateM3u8.sh > /tmp/m3u8.log 2>&1 &
#每分钟执行一次CreateM3u8.sh,并把所有的日志写入到/tmp/m3u8.log文件中
CreateM3u8.sh
#!/bin/bash
set -x #将执行结果显示出来
LOCKFILE="/tmp/m3u8_lock"#防止二次执行,单实例运行,互斥
if [ -f ${LOCKFILE} ]
then
echo "someon do the same thing"
exit
else
touch ${LOCKFILE}
fi
Folder_A="/softwares/mp4"
Folder_D="/HLS/hls"
emptydir="/softwares/mp4/*"
for file_a in ${Folder_A}/*
do
ora_filename=`basename $file_a`
out_filename=`basename $file_a .mp4`
#if [ "${file_a}" != "/softwares/mp4/*" ];then
/usr/local/bin/ffmpeg -i $file_a -hls_time 10 -hls_list_size 0 -hls_segment_filename ${Folder_D}/${out_filename}_%05d.ts ${Folder_D}/${out_filename}.m3u8 #/usr/local/bin/ffmpeg路径需要写全,不然在计划任务里面无法识别
rm $file_a -rf
#fi
done
if [ -f ${LOCKFILE} ]; then
rm -rf ${LOCKFILE}
fi
crontab -e 添加计划任务
*/1 * * * * sh /softwares/shellrun/CreateM3u8.sh > /tmp/m3u8.log 2>&1 &
#每分钟执行一次CreateM3u8.sh,并把所有的日志写入到/tmp/m3u8.log文件中
CreateM3u8.sh
#!/bin/bash
set -x #将执行结果显示出来
LOCKFILE="/tmp/m3u8_lock"#防止二次执行,单实例运行,互斥
if [ -f ${LOCKFILE} ]
then
echo "someon do the same thing"
exit
else
touch ${LOCKFILE}
fi
Folder_A="/softwares/mp4"
Folder_D="/HLS/hls"
emptydir="/softwares/mp4/*"
for file_a in ${Folder_A}/*
do
ora_filename=`basename $file_a`
out_filename=`basename $file_a .mp4`
#if [ "${file_a}" != "/softwares/mp4/*" ];then
/usr/local/bin/ffmpeg -i $file_a -hls_time 10 -hls_list_size 0 -hls_segment_filename ${Folder_D}/${out_filename}_%05d.ts ${Folder_D}/${out_filename}.m3u8 #/usr/local/bin/ffmpeg路径需要写全,不然在计划任务里面无法识别
rm $file_a -rf
#fi
done
if [ -f ${LOCKFILE} ]; then
rm -rf ${LOCKFILE}
fi