跳到好零件:通过Python视频处理实施Netflix的跳过介绍功能
#编程 #python #视频 #netflix

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秒长的匹配。然后,图书馆哈希并与视频匹配:

Screenshot of console output showing the library matching frames between videos

描述:控制台的屏幕快照显示哈希和匹配过程。

然后将这些哈希作为字典列表存储在类实例的matches字段中。在此下方,我们打印匹配项并使用库save方法将匹配节保存到JSON文件:

A screenshot of the console showing the matching frames.

匹配键的返回阵列(如果有的话)分别是比较视频的开始和结束匹配的秒数。

然后,我们可以将此作为上下文传递给前端。使用JavaScript修改视频S currentTime属性,我们可以跳过介绍部分:

Screenshot video showing implementing the Skip Intro feature implemented in the frontend

在上述GIF中可以看到,跳过介绍按钮出现在介绍部分上。

可以在此处找到类似的_vid库:https://github.com/jahwi/similar-vid

感谢您的阅读。