利用ffmpeg合并小米摄像头视频方法

小米摄像头文件默认是一分钟一分钟的单独文件,视频存储在NAS,想合并成一个视频,虽然有工具合并,但是会导致文件非常大,找了好久找到个能用的,亲测可用,分享给有需要的人,代码和原理来自贴吧,就不在这放链接了
此方法不是直接复制的内存卡视频,而是选择存储在NAS保存在NAS中的文件结构,文件结构如下图:

3.png

代码需要ffmpeg环境支持,教程一搜一大推(直接搜“Windows搭建ffmpeg环境),不做赘述,记得要下载Release builds文件,下载地址:https://www.gyan.dev/ffmpeg/builds/

4.png

代码说明如下:
1、复制代码
2、新建文本文档 -粘贴代码-另存为-文本格式改为ANSI-后缀名改为bat
3、将bat文件放在视频记录“小时文件夹”同级,双击运行

代码实现功能:
1、将“小时文件夹”内的所有1分钟时长的监控视频,合并成一个文件,文件名字为“年月日_时分秒.mov”(分秒依据“小时文件夹”内第一个文件获取),并将文件临时存放在“小时文件夹”同级,然后程序会有10分钟延时,按任意按键可继续,目的是在此期间检查合并是否正常。
2、然后继续依据mov文件名的“年月日”创建年\月\日文件夹,将所有mov文件移动到对应的文件夹中。

@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

运行生成结果如下(还在运行中,按小时文件已生成):

5.png



附单独移动文件分类的代码(没啥用)

@echo off & setlocal EnableDelayedExpansion

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 "!c!\!d!\!e!" md "!c!\!d!\!e!"
move "%%z" "!c!\!d!\!e!"
echo %%z 成功移动至 !c!\!d!\!e! 文件夹!
)
pause


    Danzel
    Danzel管理员

    • 声明:本文由Danzel于2022-12-11转载(优化),转载须经原站同意并注明出处。
    • 本文地址:http://maryd.cn/?id=256
    上一篇:IntelliJ全家桶激活
    下一篇:IDEA使用Terminal,Esc取消了聚焦

    留言评论

    1条留言

    评论列表

    ss
    ss
    感谢分享,请问如果想将视频合并成一天需要怎么修改代码呢?
    2023-01-12 18:16:37 回复
    取消
    扫码支持