public sealed class ObjectTrackingAnnotation : IMessage<ObjectTrackingAnnotation>, IEquatable<ObjectTrackingAnnotation>, IDeepCloneable<ObjectTrackingAnnotation>, IBufferMessage, IMessage
Reference documentation and code samples for the Google Cloud Video Intelligence v1 API class ObjectTrackingAnnotation.
public RepeatedField<ObjectTrackingFrame> Frames { get; }
Information corresponding to all frames where this object track appears.
Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
messages in frames.
Streaming mode: it can only be one ObjectTrackingFrame message in frames.
Streaming mode ONLY.
In streaming mode, we do not know the end time of a tracked object
before it is completed. Hence, there is no VideoSegment info returned.
Instead, we provide a unique identifiable integer track_id so that
the customers can correlate the results of the ongoing
ObjectTrackAnnotation of the same track_id over time.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eObjectTrackingAnnotation\u003c/code\u003e class in the Google Cloud Video Intelligence v1 API represents annotations for tracked objects within a video.\u003c/p\u003e\n"],["\u003cp\u003eThis class provides information such as confidence levels, the object's entity category, and frames where the object appears.\u003c/p\u003e\n"],["\u003cp\u003eIt implements several interfaces, including \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, and \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and has both batch and streaming modes to provide video segment or track ID data, respectively.\u003c/p\u003e\n"],["\u003cp\u003eThe class has properties for both batch (\u003ccode\u003eSegment\u003c/code\u003e) and streaming (\u003ccode\u003eTrackId\u003c/code\u003e) modes to define how object tracking is identified.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of the \u003ccode\u003eObjectTrackingAnnotation\u003c/code\u003e class is 3.4.0, with several previous versions available as documented.\u003c/p\u003e\n"]]],[],null,["# Google Cloud Video Intelligence v1 API - Class ObjectTrackingAnnotation (3.4.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.4.0 (latest)](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/latest/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation)\n- [3.3.0](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/3.3.0/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation)\n- [3.2.0](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/3.2.0/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation)\n- [3.1.0](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/3.1.0/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation)\n- [3.0.0](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/3.0.0/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/2.3.0/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation)\n- [2.2.0](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/2.2.0/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation) \n\n public sealed class ObjectTrackingAnnotation : IMessage\u003cObjectTrackingAnnotation\u003e, IEquatable\u003cObjectTrackingAnnotation\u003e, IDeepCloneable\u003cObjectTrackingAnnotation\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Google Cloud Video Intelligence v1 API class ObjectTrackingAnnotation.\n\nAnnotations corresponding to one tracked object. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e ObjectTrackingAnnotation \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[ObjectTrackingAnnotation](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/latest/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[ObjectTrackingAnnotation](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/latest/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[ObjectTrackingAnnotation](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/latest/Google.Cloud.VideoIntelligence.V1.ObjectTrackingAnnotation), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.VideoIntelligence.V1](/dotnet/docs/reference/Google.Cloud.VideoIntelligence.V1/latest/Google.Cloud.VideoIntelligence.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.VideoIntelligence.V1.dll\n\nConstructors\n------------\n\n### ObjectTrackingAnnotation()\n\n public ObjectTrackingAnnotation()\n\n### ObjectTrackingAnnotation(ObjectTrackingAnnotation)\n\n public ObjectTrackingAnnotation(ObjectTrackingAnnotation other)\n\nProperties\n----------\n\n### Confidence\n\n public float Confidence { get; set; }\n\nObject category's labeling confidence of this track.\n\n### Entity\n\n public Entity Entity { get; set; }\n\nEntity to specify the object category that this track is labeled as.\n\n### Frames\n\n public RepeatedField\u003cObjectTrackingFrame\u003e Frames { get; }\n\nInformation corresponding to all frames where this object track appears.\nNon-streaming batch mode: it may be one or multiple ObjectTrackingFrame\nmessages in frames.\nStreaming mode: it can only be one ObjectTrackingFrame message in frames.\n\n### HasTrackId\n\n public bool HasTrackId { get; }\n\nGets whether the \"track_id\" field is set\n\n### Segment\n\n public VideoSegment Segment { get; set; }\n\nNon-streaming batch mode ONLY.\nEach object track corresponds to one video segment where it appears.\n\n### TrackId\n\n public long TrackId { get; set; }\n\nStreaming mode ONLY.\nIn streaming mode, we do not know the end time of a tracked object\nbefore it is completed. Hence, there is no VideoSegment info returned.\nInstead, we provide a unique identifiable integer track_id so that\nthe customers can correlate the results of the ongoing\nObjectTrackAnnotation of the same track_id over time.\n\n### TrackInfoCase\n\n public ObjectTrackingAnnotation.TrackInfoOneofCase TrackInfoCase { get; }\n\n### Version\n\n public string Version { get; set; }\n\nFeature version."]]