经过昨天一天努力,没能找到无损合并成mp4的方法,最后受ffmpeg交流群一位老师点拨,输出成mov或mkv格式,均是无损合并,算是曲线救国吧。
然后自己又网上搜各种批处理命令,算是解决了监控历史文件整理问题。
代码需要ffmpeg环境支持,参考教程
https://www.chiser.cc/1406.html1、复制代码
2、新建文本文档 -粘贴代码-另存为-文本格式改为ANSI-后缀名改为bat
3、将bat文件放在视频记录“小时文件夹”同级,双击运行
代码实现功能:
1、将“小时文件夹”内的所有1分钟时长的监控视频,合并成一个文件,文件名字为“年月日_时分秒.mov”(分秒依据“小时文件夹”内第一个文件获取),并将文件临时存放在“小时文件夹”同级,然后程序会有10分钟延时,按任意按键可继续,目的是在此期间检查合并是否正常。
2、然后继续依据mov文件名的“年月日”创建年\月\日文件夹,将所有mov文件移动到对应的文件夹中。
以下为批处理源码:
@璐村惂鐢ㄦ埛_000076K馃惥 off& setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /ad/b') do (
set name=%%a
set name=%cd%\!name:~,8!_!name:~-2!
set var=%cd%\%%a
set var=!var:\\=\!
echo !var!
cd "!var!"
for /f %%s in ('dir /b "*.mp4"') do (
echo file %%s >> files.txt
)
set /p ms=<"files.txt"
set name=!name!!ms:~5,2!!ms:~8,2!
ffmpeg -f concat -i files.txt -c copy !name!.mov
del files.txt
echo !name!.mov 已生成。
cd ..
)
TIMEOUT /T 600
for /f "delims=" %%z in ('dir /b *.mov') do (
set b=%%z
set c=!b:~,4!
set /a d=!b:~4,2!
set /a e=!b:~6,2!
if not exist "%cd%\!c!\!d!\!e!" md "%cd%\!c!\!d!\!e!"
move "%%z" "!c!\!d!\!e!"
echo %%z 成功移动至 !c!\!d!\!e! 文件夹!
)
pause