我有一个保存为1.jpg的图像,我想在视频中查找与此图像相似的帧,并获取这些帧或时间戳的帧号。 该命令可以找到相似的图像,但是它以难以解析的格式输出结果。如何修复此命令以仅获取相似的帧而没有其他信息?
ffmpeg.exe -i "1.mkv" -r 1 -loop 1 -i 1.jpg -an -filter_complex "blend=difference:shortest=1,blackframe=99:32" -f null -
答案 0 :(得分:1)
使用grep
和sed
:-f null - 2>&1 | grep blackframe | sed 's/.*frame\:\(.*\)/\1/'
完整代码:
ffmpeg.exe -i "1.mkv" -r 1 -loop 1 -i 1.jpg -an -filter_complex "blend=difference:shortest=1,blackframe=99:32" -f null - 2>&1 | grep blackframe | sed 's/.*frame\:\(.*\)/\1/'
grep blackframe
为您提供了以下几行:
[Parsed_blackframe_9 @ 0x7fea7de01b80] frame:199 pblack:99 pts:716400 t:7.960000 type:P last_keyframe:198
用sed
修改此行:
s
命令(如替代命令)可能是sed中最重要的命令,并且有许多不同的选项。 s
命令的语法为's/regexp/replacement/flags'
。
在这种情况下,regexp
(正则表达式模式)为.*frame\:\(.*\)
这意味着{any characters}frame: {any characters}
({\
是正则表达式中冒号:
和括号(
)
的必需转义字符。)
replacement
是\1
。
它是指由转义括号捕获的字符。