V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

识别视频关键帧有什么好的方案吗, x265 之类的编码器有没有提供可调用的 api ?

  •  
  •   LeeReamond · 2021-05-26 04:04:56 +08:00 · 1215 次点击
    这是一个创建于 1278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,现有一需求是将视频按关键帧分段,比如视频从 0-240 帧是一个拍男主角的镜头,241-500 帧是一个拍女主角的镜头,希望得到的输出结果是 0-240,241-500 。需求上希望切割越准确越好,但可以容忍一定的错误,并不要求 100%准确。

    正常来说直接从源视频里划分区间就可以,但是因为拿到的数据是裸流,没有任何帧的标识,且未经压缩体积特别大。想问一下论坛里有没有做过的朋友,这个处理传统编码器中应该有比较成熟的方案,不需要利用机器学习之类的方法就能得到比较良好的结果。

    我观察了一下,默认使用 x265 压缩视频得到的区间划分就挺不错的,但是问题是 x265 转码一遍再提取出关键帧这太慢了啊

    10 条回复    2021-05-28 00:39:37 +08:00
    beijiaoff
        1
    beijiaoff  
       2021-05-26 08:10:15 +08:00   ❤️ 1
    如果是画面缓缓的从男主到女主呢,你希望得到在哪个地方的分界?
    另外不要随便用关键帧这个词呀,这个术语在视频编码有它的定义。I 帧、P 帧、B 帧这种语境下。
    你是不是想做类似 pornhub 的体位姿势识别,然后给视频标记章节。
    bfdh
        2
    bfdh  
       2021-05-26 08:25:27 +08:00
    裸流 是不是就是类似 yuv 数据这种流?这种格式都还没压缩编码,不存在关键帧,每一帧都是一幅完整图像,相互之间没有关联,不存在 I 帧、P 帧、B 帧的概念。似乎可以直接拿每幅图像直接进行识别?
    Kagari
        3
    Kagari  
       2021-05-26 09:02:16 +08:00
    既然用编码器的关键帧分割就能满足要求,那编码后直接用无损视频分割切一下就行,不用重新编码
    iamzuoxinyu
        4
    iamzuoxinyu  
       2021-05-26 09:11:45 +08:00 via Android
    packet parse 一下,不需要真正的解码。
    3dwelcome
        5
    3dwelcome  
       2021-05-26 09:15:40 +08:00
    就用 NV 显卡的 gpu encode 就可以了。
    x265 压缩速度和游戏串流压缩一样,几乎是实时无延迟的,然后把 I 帧位置提出来。
    3dwelcome
        6
    3dwelcome  
       2021-05-26 09:16:41 +08:00
    @iamzuoxinyu 楼主是 yuv 序列帧,感觉应该没 packet 的概念,否则体积也不可能特别大。
    BrightSphere
        7
    BrightSphere  
       2021-05-26 09:36:04 +08:00 via Android
    https://github.com/Breakthrough/PySceneDetect
    这个?但没试过准确度和速度
    LeeReamond
        8
    LeeReamond  
    OP
       2021-05-26 09:50:20 +08:00
    @bfdh 可能我没形容准确,裸流的意思是 y4m 流,比如 1080p,包含所有像素,每个像素包含所有平面,未压缩。
    iamzuoxinyu
        9
    iamzuoxinyu  
       2021-05-27 13:00:26 +08:00 via Android
    还没编码,那哪来的关键帧…你是想要转场画面吧。
    abcysn
        10
    abcysn  
       2021-05-28 00:39:37 +08:00 via iPhone
    你要的应该是场景切换的判断,感觉去 x265 里抠段代码应该就够了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:13 · PVG 11:13 · LAX 19:13 · JFK 22:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.