基于黑像素比例移除视频夜间帧的技术实现与结果疑问
基于黑像素比例移除视频夜间帧的技术实现与结果疑问
我手头有一批每月间隔录制的监控摄像头视频,现在需要剔除其中夜间时段的内容——具体来说就是删除那些黑像素占比超过30%的帧。
最开始我是按下面这三个步骤操作的:
步骤1:加速目录下所有.mp4文件*
执行这条ffmpeg命令,把视频进行加速处理:for %%i in (".mp4") do ffmpeg -i %%i -r 30 -filter:v "setpts=1/3600*PTS" "Output\%%i"步骤2:合并加速后的视频文件
先将Output目录里的文件整理到list.txt中,再用ffmpeg合并成一个H.264编码的视频:ffmpeg -f concat -safe 0 -i list.txt -c copy General(h_264).mp4步骤3:转码为H.265编码
把合并好的视频转成H.265格式,减少文件体积:ffmpeg -i General(h_264).mp4 -vcodec hevc TimeLapse(h_265).mp4
后来@Gantendo给了一个更直接的解决方案,用这条ffmpeg命令就能直接处理:
ffmpeg -i in.mp4 -vf "blackframe=amount=0:threshold=98, metadata=select:key='lavfi.blackframe.pblack':value=27:function=less" -vsync 0 img%d.mp4
不过我有点搞不懂最终的结果:处理后得到的文件里,确实没有了那些黑像素占比超过98%的帧,但这些被移除的帧只占总帧量的27%?我只能这么描述这个结果,有点疑惑这个参数设置对应的实际效果是不是符合我最初的需求。
备注:内容来源于stack exchange,提问作者Evgenii_Ustyugov
相关产品推荐
相关产品推荐

