一些变化正悄无声息的发生。
以前在地图app里搜沈阳,定位点一定在故宫,而现在你再搜,定位的中心点已经变成以浑河为界故宫对岸的浑南新城中央公园。这里自然有造城运动的结果,也不无讽刺地将以前以皇家陵园为中心的中点改天换地地转变成围绕人民大众喜闻乐见的跳广场舞的公园。
以前以水为界,水南为阴,水北为阳,沈阳改名沈阴也有据可查了。
哪有什么永恒,永恒只存在于我们的记忆中。
产品 商业 传承
一些变化正悄无声息的发生。
以前在地图app里搜沈阳,定位点一定在故宫,而现在你再搜,定位的中心点已经变成以浑河为界故宫对岸的浑南新城中央公园。这里自然有造城运动的结果,也不无讽刺地将以前以皇家陵园为中心的中点改天换地地转变成围绕人民大众喜闻乐见的跳广场舞的公园。
以前以水为界,水南为阴,水北为阳,沈阳改名沈阴也有据可查了。
哪有什么永恒,永恒只存在于我们的记忆中。
小米摄像头的视频记录文件是每分钟保存成一个文件的,后期存档和查看很不方便,对此,我编写了几个小脚本方便自动化的处理其原始视频文件。
思路如下:
具体脚本如下:
1. 导出监控,有两种方式:
方式1:通过小米监控摄像头的NAS同步设置
方式2:手工同步:需要每次在APP中设置 推出储存卡,然后手工取下存储卡,并通过 读卡器,将视频和截图文件保存到电脑上
方式1更方便,但是没有图片截图,后面审查工作会比较费时间,可以通过批处理来生成缩略图:
for /f "delims=" %%i in ('dir *.mp4 /b /s') do (ffmpeg -v quiet -y -i %%i -ss 1 -f image2 %%i.jpeg)
2. 遍历审查所有视频/截图内容,审查完后删除当前文件夹下及所有子目录下的jpeg图片来删除缩略图,命令如下:
del /f /s /q *.jpeg
3. 创建待处理清单:
dir /s /b > files.lst
4. 增加文件头尾辅助字符,以符合ffmpeg的待处理文件清单格式:
@echo off
cd /d "%~dp0"
set "fd=temp"
md "%fd%" 2>nul
@echo off
cd /d "%~dp0"
set "fd=temp"
md "%fd%" 2>nul
for /f "delims=" %%a in ('dir /a-d/b *.lst') do (
echo;"%%a"
(for /f "tokens=1*delims=:" %%b in ('findstr /n .* "%%a"') do (
set "f=%%c"
if defined f (echo;file '%%c') else (echo;)
))>"%fd%\%%a"
del "%%a"
move /y "%fd%\%%a" "%%a"
)
echo;%w% +%#%%#% %zx%
rd temp
5. 压缩所有文件
for %%i in (*.lst) do (ffmpeg -hide_banner -f concat -safe 0 -i %%i -c:v libx265 -b:v 384k -c:a aac -s 1280x720 -vf scale=1280:720 -vf fps=20 %%i.mp4)
6. 删除清单lst文件
del /f /s /q *.lst
批处理打包下载:
@ECHO off
@REM 删除视频截图并把当前文件下所有文件压缩成mp4
setlocal enabledelayedexpansion
:1
@REM 查找系统进程有没有FFMPEG
tasklist /nh|find /i "ffmpeg.exe" >nul
if ERRORLEVEL 0 (
@REM 如果有,就等待10秒
sleep 10
goto 1
)
@REM 如果没有就执行下面的命令
@REM 删除所有图片
del /f /s /q *.jpeg
@REM 将所有目录及子目录下文件放在temp.txt
dir /s /b > temp.txt
@REM 给temp.txt的每一行增加 file ''以方便ffmpeg处理
cd /d "%~dp0"
set "fd=temp"
md "%fd%" 2>nul
for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
echo;"%%a"
(for /f "tokens=1*delims=:" %%b in ('findstr /n .* "%%a"') do (
set "f=%%c"
if defined f (echo;file '%%c') else (echo;)
))>"%fd%\%%a"
del "%%a"
move /y "%fd%\%%a" "%%a"
)
echo;%w% +%#%%#% %zx%
rd temp
@REM 把即将压缩的文件命名为YYYYMMDDHH-HH格式
dir /a:d /b > _dirlist.txt
set /p a=<_dirlist.txt
for /f "delims=" %%i in (_dirlist.txt) do (
@REM 找出最后一行的文本内容
set b=%%i
)
@REM 截取前10位和后2位 组成文件名
set filename=%a:~0,10%-%b:~-2%
del _dirlist.txt
@REM 把temp.txt里面的非mp4内容删除
@REM 这里偷懒用到了Cygwin下的cat iconv grep命令 如有DOS方式请告知
@REM 在Cygwin下用iconv貌似一直无法输出正确的编码,但是在DOS下却能,奇怪
cat temp.txt|iconv -f GBK -t UTF-8|grep .mp4>%filename%.txt
del temp.txt
@REM 开始压缩
ffmpeg -hide_banner -hwaccel dxva2 -f concat -safe 0 -i "%filename%".txt -c:v hevc_qsv -b:v 384k -c:a aac -vf "scale=1280:-1, fps=20" "%filename%.mp4"
@REM 删除临时文件
del %filename%.txt