Google Cloud VideoIntelligence - 有没有办法只为视频的特定部分调用 AnnotateVideo?
Google Cloud VideoIntelligence - Is there a way to only call AnnotateVideo for a particular section of a video?
目前我正在使用AnnotateVideo功能来分析视频。有什么方法可以只分析视频的一部分,例如提供 start_time 和 end_time 作为函数的参数?
gs_video_path ='gs://'+bucket_name+'/'+videodata.video.path+videodata.video.name
print(gs_video_path)
video_client = videointelligence.VideoIntelligenceServiceClient()
features = [videointelligence.enums.Feature.OBJECT_TRACKING]
operation = video_client.annotate_video(gs_video_path, features=features)
您可以做的是分析完整视频,然后检索指定时间或帧的注释,请参阅此 code。
如果因为视频太长不符合您的要求,而您只想处理特定的部分,建议您使用外部工具在本地剪切视频,然后对该片段进行标注.例如你可以使用下面的代码来剪切视频(还有很多其他的)。
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", start_time, end_time, targetname="test.mp4")
然后你将不得不处理视频 from a local file
您可以通过提供 VideoContext
和 VideoSegment
列表来仅分析您感兴趣的部分。这是一个包含单个 21..42s 段的示例:
from google.cloud import videointelligence
from google.cloud.videointelligence import enums, types
video_client = videointelligence.VideoIntelligenceServiceClient()
gs_video_path = f'gs://{bucket_name}/{videodata.video.path}{videodata.video.name}'
features = [enums.Feature.OBJECT_TRACKING]
segment = types.VideoSegment()
segment.start_time_offset.FromSeconds(21)
segment.end_time_offset.FromSeconds(42)
context = types.VideoContext(segments=[segment])
operation = video_client.annotate_video(
gs_video_path,
features=features,
video_context=context)
如果你想要更多的例子,我最近写了这篇教程:https://codelabs.developers.google.com/codelabs/cloud-video-intelligence-python3
目前我正在使用AnnotateVideo功能来分析视频。有什么方法可以只分析视频的一部分,例如提供 start_time 和 end_time 作为函数的参数?
gs_video_path ='gs://'+bucket_name+'/'+videodata.video.path+videodata.video.name
print(gs_video_path)
video_client = videointelligence.VideoIntelligenceServiceClient()
features = [videointelligence.enums.Feature.OBJECT_TRACKING]
operation = video_client.annotate_video(gs_video_path, features=features)
您可以做的是分析完整视频,然后检索指定时间或帧的注释,请参阅此 code。
如果因为视频太长不符合您的要求,而您只想处理特定的部分,建议您使用外部工具在本地剪切视频,然后对该片段进行标注.例如你可以使用下面的代码来剪切视频(还有很多其他的)。
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", start_time, end_time, targetname="test.mp4")
然后你将不得不处理视频 from a local file
您可以通过提供 VideoContext
和 VideoSegment
列表来仅分析您感兴趣的部分。这是一个包含单个 21..42s 段的示例:
from google.cloud import videointelligence
from google.cloud.videointelligence import enums, types
video_client = videointelligence.VideoIntelligenceServiceClient()
gs_video_path = f'gs://{bucket_name}/{videodata.video.path}{videodata.video.name}'
features = [enums.Feature.OBJECT_TRACKING]
segment = types.VideoSegment()
segment.start_time_offset.FromSeconds(21)
segment.end_time_offset.FromSeconds(42)
context = types.VideoContext(segments=[segment])
operation = video_client.annotate_video(
gs_video_path,
features=features,
video_context=context)
如果你想要更多的例子,我最近写了这篇教程:https://codelabs.developers.google.com/codelabs/cloud-video-intelligence-python3