假设文件夹input中有很多视频,视频的后缀为mpeg,将视频关键帧数量小于10的视频拷贝到文件夹ouput中
for i in input/*.mpeg;do ffprobe -select_streams v -show_frames -v quiet -print_format json=compact=1 $i | grep '"key_frame": 1' | wc -l | (read count && [ $count -lt 10 ] && cp $i output);done
要注意的几点:
关键帧判断中'"key_frame": 1' ,冒号和1之间是有空格的
[ $count -lt 10 ]中[和$中也是有空格的
除了使用-lt表示小于以外,-lt
是用于比较两个数值是否小于的比较运算符。它的全拼是"less than",表示"小于"的意思。在条件测试中,使用 [ ]
或 test
命令结合 -lt
来进行数值比较。
例如,[ $count -lt 10 ]
表示判断变量 count
的值是否小于10。
这里是一些常用的数值比较运算符及其全拼:
-lt
:less than(小于)-gt
:greater than(大于)-le
:less than or equal to(小于等于)-ge
:greater than or equal to(大于等于)-eq
:equal to(等于)-ne
:not equal to(不等于)
这些运算符可以在条件测试中用于比较数值。
标签:count,视频,小于,lt,关键帧,拷贝到,than,10 From: https://www.cnblogs.com/chentiao/p/17541178.html