1

目前我正在使用 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)
4

2 回答 2

1

您可以做的是分析完整的视频,然后检索指定时间或帧的注释,请参阅此代码

如果由于视频太长而无法满足您的要求,并且您只想处理特定部分,建议您使用外部工具在本地剪切视频,然后对该片段进行注释。例如,您可以使用以下代码剪切视频(还有很多其他代码)。

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", start_time, end_time, targetname="test.mp4")

然后你将不得不处理来自本地文件的视频

于 2020-06-01T11:03:43.647 回答
1

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

于 2020-06-02T16:39:51.833 回答