439 lines
21 KiB
TypeScript
439 lines
21 KiB
TypeScript
/**
|
|
* Copyright 2015 Google Inc. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/* jshint maxlen: false */
|
|
|
|
import createAPIRequest from '../../lib/apirequest';
|
|
|
|
/**
|
|
* Cloud Video Intelligence API
|
|
*
|
|
* Cloud Video Intelligence API.
|
|
*
|
|
* @example
|
|
* const google = require('googleapis');
|
|
* const videointelligence = google.videointelligence('v1beta1');
|
|
*
|
|
* @namespace videointelligence
|
|
* @type {Function}
|
|
* @version v1beta1
|
|
* @variation v1beta1
|
|
* @param {object=} options Options for Videointelligence
|
|
*/
|
|
function Videointelligence(options) { // eslint-disable-line
|
|
const self = this;
|
|
self._options = options || {};
|
|
|
|
self.videos = {
|
|
|
|
/**
|
|
* videointelligence.videos.annotate
|
|
*
|
|
* @desc Performs asynchronous video annotation. Progress and results can be retrieved through the `google.longrunning.Operations` interface. `Operation.metadata` contains `AnnotateVideoProgress` (progress). `Operation.response` contains `AnnotateVideoResponse` (results).
|
|
*
|
|
* @alias videointelligence.videos.annotate
|
|
* @memberOf! videointelligence(v1beta1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
annotate: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://videointelligence.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1beta1/videos:annotate').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: [],
|
|
pathParams: [],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
}
|
|
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_AnnotateVideoProgress
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_VideoAnnotationProgress[]} annotationProgress Progress metadata for all videos specified in `AnnotateVideoRequest`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_AnnotateVideoResponse
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_VideoAnnotationResults[]} annotationResults Annotation results for all videos specified in `AnnotateVideoRequest`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_LabelAnnotation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} description Textual description, e.g. `Fixed-gear bicycle`.
|
|
* @property {string} languageCode Language code for `description` in BCP-47 format.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_LabelLocation[]} locations Where the label was detected and with what confidence.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_LabelLocation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {number} confidence Confidence that the label is accurate. Range: [0, 1].
|
|
* @property {string} level Label level.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_VideoSegment} segment Video segment. Unset for video-level labels.
|
|
Set to a frame timestamp for frame-level labels.
|
|
Otherwise, corresponds to one of `AnnotateSpec.segments`
|
|
(if specified) or to shot boundaries (if requested).
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_SafeSearchAnnotation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} adult Likelihood of adult content.
|
|
* @property {string} time Time-offset, relative to the beginning of the video,
|
|
corresponding to the video frame for this annotation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_VideoAnnotationProgress
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} inputUri Video file location in
|
|
[Google Cloud Storage](https://cloud.google.com/storage/).
|
|
* @property {integer} progressPercent Approximate percentage processed thus far.
|
|
Guaranteed to be 100 when fully processed.
|
|
* @property {string} startTime Time when the request was received.
|
|
* @property {string} updateTime Time of the most recent update.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_VideoAnnotationResults
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleRpc_Status} error If set, indicates an error. Note that for a single `AnnotateVideoRequest`
|
|
some videos may succeed and some may fail.
|
|
* @property {string} inputUri Video file location in
|
|
[Google Cloud Storage](https://cloud.google.com/storage/).
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_LabelAnnotation[]} labelAnnotations Label annotations. There is exactly one element for each unique label.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_SafeSearchAnnotation[]} safeSearchAnnotations Safe search annotations.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1_VideoSegment[]} shotAnnotations Shot annotations. Each shot is represented as a video segment.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1_VideoSegment
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} endTime Time-offset, relative to the beginning of the video,
|
|
corresponding to the end of the segment (inclusive).
|
|
* @property {string} startTime Time-offset, relative to the beginning of the video,
|
|
corresponding to the start of the segment (inclusive).
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_AnnotateVideoProgress
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress[]} annotationProgress Progress metadata for all videos specified in `AnnotateVideoRequest`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string[]} features Requested video annotation features.
|
|
* @property {string} inputContent The video data bytes. Encoding: base64. If unset, the input video(s)
|
|
should be specified via `input_uri`. If set, `input_uri` should be unset.
|
|
* @property {string} inputUri Input video location. Currently, only
|
|
[Google Cloud Storage](https://cloud.google.com/storage/) URIs are
|
|
supported, which must be specified in the following format:
|
|
`gs://bucket-id/object-id` (other URI formats return
|
|
google.rpc.Code.INVALID_ARGUMENT). For more information, see
|
|
[Request URIs](/storage/docs/reference-uris).
|
|
A video URI may include wildcards in `object-id`, and thus identify
|
|
multiple videos. Supported wildcards: '*' to match 0 or more characters;
|
|
'?' to match 1 character. If unset, the input video should be embedded
|
|
in the request as `input_content`. If set, `input_content` should be unset.
|
|
* @property {string} locationId Optional cloud region where annotation should take place. Supported cloud
|
|
regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region
|
|
is specified, a region will be determined based on video file location.
|
|
* @property {string} outputUri Optional location where the output (in JSON format) should be stored.
|
|
Currently, only [Google Cloud Storage](https://cloud.google.com/storage/)
|
|
URIs are supported, which must be specified in the following format:
|
|
`gs://bucket-id/object-id` (other URI formats return
|
|
google.rpc.Code.INVALID_ARGUMENT). For more information, see
|
|
[Request URIs](/storage/docs/reference-uris).
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_VideoContext} videoContext Additional video context and/or feature-specific parameters.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults[]} annotationResults Annotation results for all videos specified in `AnnotateVideoRequest`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_LabelAnnotation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} description Textual description, e.g. `Fixed-gear bicycle`.
|
|
* @property {string} languageCode Language code for `description` in BCP-47 format.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_LabelLocation[]} locations Where the label was detected and with what confidence.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_LabelLocation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {number} confidence Confidence that the label is accurate. Range: [0, 1].
|
|
* @property {string} level Label level.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_VideoSegment} segment Video segment. Set to [-1, -1] for video-level labels.
|
|
Set to [timestamp, timestamp] for frame-level labels.
|
|
Otherwise, corresponds to one of `AnnotateSpec.segments`
|
|
(if specified) or to shot boundaries (if requested).
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} adult Likelihood of adult content.
|
|
* @property {string} medical Likelihood of medical content.
|
|
* @property {string} racy Likelihood of racy content.
|
|
* @property {string} spoof Likelihood that an obvious modification was made to the original
|
|
version to make it appear funny or offensive.
|
|
* @property {string} timeOffset Video time offset in microseconds.
|
|
* @property {string} violent Likelihood of violent content.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} inputUri Video file location in
|
|
[Google Cloud Storage](https://cloud.google.com/storage/).
|
|
* @property {integer} progressPercent Approximate percentage processed thus far.
|
|
Guaranteed to be 100 when fully processed.
|
|
* @property {string} startTime Time when the request was received.
|
|
* @property {string} updateTime Time of the most recent update.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleRpc_Status} error If set, indicates an error. Note that for a single `AnnotateVideoRequest`
|
|
some videos may succeed and some may fail.
|
|
* @property {string} inputUri Video file location in
|
|
[Google Cloud Storage](https://cloud.google.com/storage/).
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_LabelAnnotation[]} labelAnnotations Label annotations. There is exactly one element for each unique label.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation[]} safeSearchAnnotations Safe search annotations.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_VideoSegment[]} shotAnnotations Shot annotations. Each shot is represented as a video segment.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_VideoContext
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} labelDetectionMode If label detection has been requested, what labels should be detected
|
|
in addition to video-level labels or segment-level labels. If unspecified,
|
|
defaults to `SHOT_MODE`.
|
|
* @property {string} labelDetectionModel Model to use for label detection.
|
|
Supported values: "latest" and "stable" (the default).
|
|
* @property {string} safeSearchDetectionModel Model to use for safe search detection.
|
|
Supported values: "latest" and "stable" (the default).
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta1_VideoSegment[]} segments Video segments to annotate. The segments may overlap and are not required
|
|
to be contiguous or span the whole video. If unspecified, each video
|
|
is treated as a single segment.
|
|
* @property {string} shotChangeDetectionModel Model to use for shot change detection.
|
|
Supported values: "latest" and "stable" (the default).
|
|
* @property {boolean} stationaryCamera Whether the video has been shot from a stationary (i.e. non-moving) camera.
|
|
When set to true, might improve detection accuracy for moving objects.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta1_VideoSegment
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} endTimeOffset End offset in microseconds (inclusive). Unset means 0.
|
|
* @property {string} startTimeOffset Start offset in microseconds (inclusive). Unset means 0.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress[]} annotationProgress Progress metadata for all videos specified in `AnnotateVideoRequest`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_AnnotateVideoResponse
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults[]} annotationResults Annotation results for all videos specified in `AnnotateVideoRequest`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_Entity
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} description Textual description, e.g. `Fixed-gear bicycle`.
|
|
* @property {string} entityId Opaque entity ID. Some IDs may be available in
|
|
[Google Knowledge Graph Search
|
|
API](https://developers.google.com/knowledge-graph/).
|
|
* @property {string} languageCode Language code for `description` in BCP-47 format.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame[]} frames All video frames where explicit content was detected.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} pornographyLikelihood Likelihood of the pornography content..
|
|
* @property {string} timeOffset Time-offset, relative to the beginning of the video, corresponding to the
|
|
video frame for this location.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_LabelAnnotation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_Entity[]} categoryEntities Common categories for the detected entity.
|
|
E.g. when the label is `Terrier` the category is likely `dog`. And in some
|
|
cases there might be more than one categories e.g. `Terrier` could also be
|
|
a `pet`.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_Entity} entity Detected entity.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_LabelFrame[]} frames All video frames where a label was detected.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_LabelSegment[]} segments All video segments where a label was detected.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_LabelFrame
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {number} confidence Confidence that the label is accurate. Range: [0, 1].
|
|
* @property {string} timeOffset Time-offset, relative to the beginning of the video, corresponding to the
|
|
video frame for this location.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_LabelSegment
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {number} confidence Confidence that the label is accurate. Range: [0, 1].
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_VideoSegment} segment Video segment where a label was detected.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} inputUri Video file location in
|
|
[Google Cloud Storage](https://cloud.google.com/storage/).
|
|
* @property {integer} progressPercent Approximate percentage processed thus far.
|
|
Guaranteed to be 100 when fully processed.
|
|
* @property {string} startTime Time when the request was received.
|
|
* @property {string} updateTime Time of the most recent update.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {videointelligence(v1beta1).GoogleRpc_Status} error If set, indicates an error. Note that for a single `AnnotateVideoRequest`
|
|
some videos may succeed and some may fail.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation} explicitAnnotation Explicit content annotation.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_LabelAnnotation[]} frameLabelAnnotations Label annotations on frame level.
|
|
There is exactly one element for each unique label.
|
|
* @property {string} inputUri Video file location in
|
|
[Google Cloud Storage](https://cloud.google.com/storage/).
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_LabelAnnotation[]} segmentLabelAnnotations Label annotations on video level or user specified segment level.
|
|
There is exactly one element for each unique label.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_VideoSegment[]} shotAnnotations Shot annotations. Each shot is represented as a video segment.
|
|
* @property {videointelligence(v1beta1).GoogleCloudVideointelligenceV1beta2_LabelAnnotation[]} shotLabelAnnotations Label annotations on shot level.
|
|
There is exactly one element for each unique label.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleCloudVideointelligenceV1beta2_VideoSegment
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {string} endTimeOffset Time-offset, relative to the beginning of the video,
|
|
corresponding to the end of the segment (inclusive).
|
|
* @property {string} startTimeOffset Time-offset, relative to the beginning of the video,
|
|
corresponding to the start of the segment (inclusive).
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleLongrunning_Operation
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {boolean} done If the value is `false`, it means the operation is still in progress.
|
|
If `true`, the operation is completed, and either `error` or `response` is
|
|
available.
|
|
* @property {videointelligence(v1beta1).GoogleRpc_Status} error The error result of the operation in case of failure or cancellation.
|
|
* @property {object} metadata Service-specific metadata associated with the operation. It typically
|
|
contains progress information and common metadata such as create time.
|
|
Some services might not provide such metadata. Any method that returns a
|
|
long-running operation should document the metadata type, if any.
|
|
* @property {string} name The server-assigned name, which is only unique within the same service that
|
|
originally returns it. If you use the default HTTP mapping, the
|
|
`name` should have the format of `operations/some/unique/name`.
|
|
* @property {object} response The normal response of the operation in case of success. If the original
|
|
method returns no data on success, such as `Delete`, the response is
|
|
`google.protobuf.Empty`. If the original method is standard
|
|
`Get`/`Create`/`Update`, the response should be the resource. For other
|
|
methods, the response should have the type `XxxResponse`, where `Xxx`
|
|
is the original method name. For example, if the original method name
|
|
is `TakeSnapshot()`, the inferred response type is
|
|
`TakeSnapshotResponse`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef GoogleRpc_Status
|
|
* @memberOf! videointelligence(v1beta1)
|
|
* @type object
|
|
* @property {integer} code The status code, which should be an enum value of google.rpc.Code.
|
|
* @property {object[]} details A list of messages that carry the error details. There is a common set of
|
|
message types for APIs to use.
|
|
* @property {string} message A developer-facing error message, which should be in English. Any
|
|
user-facing error message should be localized and sent in the
|
|
google.rpc.Status.details field, or localized by the client.
|
|
*/
|
|
export = Videointelligence;
|