本帖最后由 zuohaoda 于 2022-12-13 20:39 编辑
小米摄像头文件默认是一分钟一分钟的单独文件,视频存储在NAS,想合并成一个视频,虽然有工具合并,但是会导致文件非常大,找了好久找到个能用的,亲测可用,分享给有需要的人,代码和原理来自贴吧,就不在这放链接了
此方法不是直接复制的内存卡视频,而是选择存储在NAS保存在NAS中的文件结构,文件结构如下图:
代码需要ffmpeg环境支持,教程一搜一大推(直接搜“Windows搭建ffmpeg环境”),不做赘述,记得要下载Release builds文件,下载地址:https://www.gyan.dev/ffmpeg/builds/
代码说明如下:
1、复制代码
2、新建文本文档 -粘贴代码-另存为-文本格式改为ANSI-后缀名改为bat
3、将bat文件放在视频记录“小时文件夹”同级,双击运行
代码实现功能:
1、将“小时文件夹”内的所有1分钟时长的监控视频,合并成一个文件,文件名字为“年月日_时分秒.mov”(分秒依据“小时文件夹”内第一个文件获取),并将文件临时存放在“小时文件夹”同级,然后程序会有10分钟延时,按任意按键可继续,目的是在此期间检查合并是否正常。
2、然后继续依据mov文件名的“年月日”创建年\月\日文件夹,将所有mov文件移动到对应的文件夹中。
[Asm] 纯文本查看 复制代码 @echo 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 d=!b:~4,2!
set e=!b:~6,2!
echo %%z" "!c!\!d!\!e!
if not exist "%cd%\!c!\!d!\!e!" md "%cd%\!c!\!d!\!e!"
move "%%z" "!c!\!d!\!e!"
echo %%z 成功移动至 !c!\!d!\!e! 文件夹!
)pause
运行生成结果如下(还在运行中,按小时文件已生成):
如果是直接拔出内存卡处理,可参考此开源项目:https://github.com/tasy5kg/MiCameraVideoExporter,摄像头不好拿,故未测试,有需要的可以试试看
|