37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import os, shutil
|
|
from docarray import Document, DocumentArray
|
|
|
|
# https://blog.csdn.net/Jina_AI/article/details/128475707
|
|
|
|
class Screenshot:
|
|
# 视频名称
|
|
videoName = ''
|
|
# 视频所在的 父级路径
|
|
videoPath = '../../source/'
|
|
# 视频帧截图后输出的 父级路径
|
|
outputKeyframes = '../../dist/'
|
|
d = ''
|
|
keyframes = DocumentArray()
|
|
|
|
def __init__(self, video_name):
|
|
self.videoName = video_name
|
|
self.d = Document(uri=self.videoPath + self.videoName).load_uri_to_video_tensor(only_keyframes=False)
|
|
self.createdDir()
|
|
self.start()
|
|
|
|
def start(self):
|
|
for i in range(len(self.d.tensor)):
|
|
if i in self.d.tags['keyframe_indices']:
|
|
keyframe = Document(
|
|
tensor=self.d.tensor[i], tags={'index': len(self.keyframes)}
|
|
)
|
|
keyframe.save_image_tensor_to_file(file=f'{self.outputKeyframes}/{self.videoName}/{len(self.keyframes)}.png')
|
|
self.keyframes.append(keyframe)
|
|
|
|
|
|
def createdDir(self):
|
|
if not os.path.isdir(self.outputKeyframes + self.videoName):
|
|
os.makedirs(self.outputKeyframes + self.videoName, exist_ok=True)
|
|
|
|
|
|
Screenshot('yjkon.mp4') |