Netflix的Skip Intro功能与服务本身一样标志性,使订阅者可以跳过电视节目的介绍和Outro部分。从那时起,其他流媒体服务采用了此功能,使其成为流媒体世界的主食。
最近,我开始考虑实施此功能,这使我制作了一个small library,以在视频中找到类似的部分。它通过将视频放入框架,哈希帧并比较每个比较视频和参考视频之间的类似帧来做到这一点。
我决定在我最近最喜欢的Netflix Show上测试该库:
from similar_vid.similar_secs import Similar, save
file1 = "videos//inside_job//01.mkv"
file2 = "videos//inside_job//02.mkv"
file3 = "videos//inside_job//03.mkv"
file4 = "videos//inside_job//04.mkv"
file5 = "videos//inside_job//05.mkv"
if __name__ == "__main__":
inside_job = Similar(ref=file1, comp_arr = [file2, file3, file4, file5])
inside_job.match(threshold=15)
for match in inside_job.matches:
print(match)
save(inside_job.matches, "outs//matches.json")
在上面,我们从我的similar-vid库中导入类似的类,并将其传递给参考视频和一系列比较视频。然后,我们使用match
方法来进行Speficy,即我们只需要至少15秒长的匹配。然后,图书馆哈希并与视频匹配:
描述:控制台的屏幕快照显示哈希和匹配过程。
然后将这些哈希作为字典列表存储在类实例的matches
字段中。在此下方,我们打印匹配项并使用库save
方法将匹配节保存到JSON文件:
匹配键的返回阵列(如果有的话)分别是比较视频的开始和结束匹配的秒数。
然后,我们可以将此作为上下文传递给前端。使用JavaScript修改视频S currentTime
属性,我们可以跳过介绍部分:
在上述GIF中可以看到,跳过介绍按钮出现在介绍部分上。
可以在此处找到类似的_vid库:https://github.com/jahwi/similar-vid
感谢您的阅读。