我有这个ffmpeg
命令,它可以检测运动并将帧保存到输出视频中。
ffmpeg -t 60 -i $lores -vf "select='gt(scene\,0.018)',setpts=N/(25*TB)" -acodec aac -vcodec libx265 $outfile-$tnow-x.mp4
一般情况下,60秒内大概只能检测到20-30帧(最多持续2-3秒),输出视频会停留在最后一帧,直到60秒结束。
有什么方法可以重新过滤或修剪视频的长尾并仅保留移动的帧?
我现在的想法是这么做的。
ffmpeg -t 60 -i $lores -vf "select='gt(scene\,0.018)',setpts=N/(25*TB)" -an -vcodec libx265 -f nut - | ffmpeg -i - -vf "select='gt(scene\,0.018)',setpts=N/(25*TB)" $outfile-$tnow-x.mp4
注意:$lores 是 rtsp 流。
根据@Ricardo 的意见,我有一些以下替代方案。''' ffmpeg -t 300 -i $hires -an
-vf "select='gt(scene,0.02)',setpts=N/(25*TB)" -f nut - |
ffmpeg -i - -vf "mpdecimate" -codec libx265 $outfile-$tnow-fm.mp4'''
我也尝试过这个。'''ffmpeg -t 300 -i $hires -an
-vf "select='gt(scene,0.02)',setpts=N/(25*TB),mpdecimate" -codec libx265 $outfile-$tnow-fm.mp4'''这会产生最大的文件大小。