如题,现有一需求是将视频按关键帧分段,比如视频从 0-240 帧是一个拍男主角的镜头,241-500 帧是一个拍女主角的镜头,希望得到的输出结果是 0-240,241-500 。需求上希望切割越准确越好,但可以容忍一定的错误,并不要求 100%准确。
正常来说直接从源视频里划分区间就可以,但是因为拿到的数据是裸流,没有任何帧的标识,且未经压缩体积特别大。想问一下论坛里有没有做过的朋友,这个处理传统编码器中应该有比较成熟的方案,不需要利用机器学习之类的方法就能得到比较良好的结果。
我观察了一下,默认使用 x265 压缩视频得到的区间划分就挺不错的,但是问题是 x265 转码一遍再提取出关键帧这太慢了啊
1
beijiaoff 2021-05-26 08:10:15 +08:00 1
如果是画面缓缓的从男主到女主呢,你希望得到在哪个地方的分界?
另外不要随便用关键帧这个词呀,这个术语在视频编码有它的定义。I 帧、P 帧、B 帧这种语境下。 你是不是想做类似 pornhub 的体位姿势识别,然后给视频标记章节。 |
2
bfdh 2021-05-26 08:25:27 +08:00
裸流 是不是就是类似 yuv 数据这种流?这种格式都还没压缩编码,不存在关键帧,每一帧都是一幅完整图像,相互之间没有关联,不存在 I 帧、P 帧、B 帧的概念。似乎可以直接拿每幅图像直接进行识别?
|
3
Kagari 2021-05-26 09:02:16 +08:00
既然用编码器的关键帧分割就能满足要求,那编码后直接用无损视频分割切一下就行,不用重新编码
|
4
iamzuoxinyu 2021-05-26 09:11:45 +08:00 via Android
packet parse 一下,不需要真正的解码。
|
5
3dwelcome 2021-05-26 09:15:40 +08:00
就用 NV 显卡的 gpu encode 就可以了。
x265 压缩速度和游戏串流压缩一样,几乎是实时无延迟的,然后把 I 帧位置提出来。 |
6
3dwelcome 2021-05-26 09:16:41 +08:00
@iamzuoxinyu 楼主是 yuv 序列帧,感觉应该没 packet 的概念,否则体积也不可能特别大。
|
7
BrightSphere 2021-05-26 09:36:04 +08:00 via Android
https://github.com/Breakthrough/PySceneDetect
这个?但没试过准确度和速度 |
8
LeeReamond OP @bfdh 可能我没形容准确,裸流的意思是 y4m 流,比如 1080p,包含所有像素,每个像素包含所有平面,未压缩。
|
9
iamzuoxinyu 2021-05-27 13:00:26 +08:00 via Android
还没编码,那哪来的关键帧…你是想要转场画面吧。
|
10
abcysn 2021-05-28 00:39:37 +08:00 via iPhone
你要的应该是场景切换的判断,感觉去 x265 里抠段代码应该就够了
|