A partire dal 14 settembre 2026, l'API Video Intelligence è ufficialmente ritirata e non sarà più supportata. Puoi continuare a utilizzare l'API Video Intelligence fino al 14 settembre 2027, data in cui verrà ritirata. Ti consigliamo di eseguire la migrazione a Gemini Enterprise Agent Platform o all'API Cloud Vision.
Google utilizza la tecnologia AI per tradurre i contenuti nella tua lingua preferita. Le traduzioni generate dall'AI potrebbero contenere errori.
Classificazione di video
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La classificazione dei video identifica oggetti, località, attività, specie animali, prodotti e altro ancora.
Utilizzare i video AutoML
Prima di iniziare
Per informazioni di base sulla creazione di un modello AutoML, consulta la Guida introduttiva a Vertex AI
. Per
istruzioni su come creare il modello AutoML,
consulta Dati video in
"Sviluppare e utilizzare modelli di ML" nella documentazione di Vertex AI.
Usare il modello AutoML
Il seguente esempio di codice mostra come utilizzare il modello
AutoML
per la classificazione dei video utilizzando la libreria client di streaming.
importcom.google.api.gax.rpc.BidiStream;importcom.google.cloud.videointelligence.v1p3beta1.LabelAnnotation;importcom.google.cloud.videointelligence.v1p3beta1.LabelFrame;importcom.google.cloud.videointelligence.v1p3beta1.StreamingAnnotateVideoRequest;importcom.google.cloud.videointelligence.v1p3beta1.StreamingAnnotateVideoResponse;importcom.google.cloud.videointelligence.v1p3beta1.StreamingAutomlClassificationConfig;importcom.google.cloud.videointelligence.v1p3beta1.StreamingFeature;importcom.google.cloud.videointelligence.v1p3beta1.StreamingVideoAnnotationResults;importcom.google.cloud.videointelligence.v1p3beta1.StreamingVideoConfig;importcom.google.cloud.videointelligence.v1p3beta1.StreamingVideoIntelligenceServiceClient;importcom.google.protobuf.ByteString;importio.grpc.StatusRuntimeException;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.Arrays;importjava.util.concurrent.TimeoutException;classStreamingAutoMlClassification{// Perform streaming video classification with an AutoML ModelstaticvoidstreamingAutoMlClassification(StringfilePath,StringprojectId,StringmodelId)throwsTimeoutException,StatusRuntimeException,IOException{// String filePath = "path_to_your_video_file";// String projectId = "YOUR_GCP_PROJECT_ID";// String modelId = "YOUR_AUTO_ML_CLASSIFICATION_MODEL_ID";try(StreamingVideoIntelligenceServiceClientclient=StreamingVideoIntelligenceServiceClient.create()){Pathpath=Paths.get(filePath);byte[]data=Files.readAllBytes(path);// Set the chunk size to 5MB (recommended less than 10MB).intchunkSize=5*1024*1024;intnumChunks=(int)Math.ceil((double)data.length/chunkSize);StringmodelPath=String.format("projects/%s/locations/us-central1/models/%s",projectId,modelId);System.out.println(modelPath);StreamingAutomlClassificationConfigstreamingAutomlClassificationConfig=StreamingAutomlClassificationConfig.newBuilder().setModelName(modelPath).build();StreamingVideoConfigstreamingVideoConfig=StreamingVideoConfig.newBuilder().setFeature(StreamingFeature.STREAMING_AUTOML_CLASSIFICATION).setAutomlClassificationConfig(streamingAutomlClassificationConfig).build();BidiStream<StreamingAnnotateVideoRequest,StreamingAnnotateVideoResponse>call=client.streamingAnnotateVideoCallable().call();// The first request must **only** contain the audio configuration:call.send(StreamingAnnotateVideoRequest.newBuilder().setVideoConfig(streamingVideoConfig).build());// Subsequent requests must **only** contain the audio data.// Send the requests in chunksfor(inti=0;i < numChunks;i++){call.send(StreamingAnnotateVideoRequest.newBuilder().setInputContent(ByteString.copyFrom(Arrays.copyOfRange(data,i*chunkSize,i*chunkSize+chunkSize))).build());}// Tell the service you are done sending datacall.closeSend();for(StreamingAnnotateVideoResponseresponse:call){if(response.hasError()){System.out.println(response.getError().getMessage());break;}StreamingVideoAnnotationResultsannotationResults=response.getAnnotationResults();for(LabelAnnotationannotation:annotationResults.getLabelAnnotationsList()){Stringentity=annotation.getEntity().getDescription();// There is only one frame per annotationLabelFramelabelFrame=annotation.getFrames(0);doubleoffset=labelFrame.getTimeOffset().getSeconds()+labelFrame.getTimeOffset().getNanos()/1e9;floatconfidence=labelFrame.getConfidence();System.out.format("At %fs segment: %s (%f)\n",offset,entity,confidence);}}System.out.println("Video streamed successfully.");}}}
/** * TODO(developer): Uncomment these variables before running the sample. */// const path = 'Local file to analyze, e.g. ./my-file.mp4';// const modelId = 'autoMl model'// const projectId = 'Your GCP Project'const{StreamingVideoIntelligenceServiceClient}=require('@google-cloud/video-intelligence').v1p3beta1;constfs=require('fs');// Instantiates a clientconstclient=newStreamingVideoIntelligenceServiceClient();// Streaming configurationconstmodelPath=`projects/${projectId}/locations/us-central1/models/${modelId}`;constconfigRequest={videoConfig:{feature:'STREAMING_AUTOML_CLASSIFICATION',automlClassificationConfig:{modelName:modelPath,},},};constreadStream=fs.createReadStream(path,{highWaterMark:5*1024*1024,//chunk size set to 5MB (recommended less than 10MB)encoding:'base64',});//Load file content// Note: Input videos must have supported video codecs. See// https://cloud.google.com/video-intelligence/docs/streaming/streaming#supported_video_codecs// for more details.constchunks=[];readStream.on('data',chunk=>{constrequest={inputContent:chunk.toString(),};chunks.push(request);}).on('close',()=>{// configRequest should be the first in the stream of requestsstream.write(configRequest);for(leti=0;i < chunks.length;i++){stream.write(chunks[i]);}stream.end();});conststream=client.streamingAnnotateVideo().on('data',response=>{//Gets annotations for videoconstannotations=response.annotationResults;constlabels=annotations.labelAnnotations;labels.forEach(label=>{console.log(`Label ${label.entity.description} occurs at: ${label.frames[0].timeOffset.seconds||0}`+`.${(label.frames[0].timeOffset.nanos/1e6).toFixed(0)}s`);console.log(` Confidence: ${label.frames[0].confidence}`);});}).on('error',response=>{console.error(response);});
importiofromgoogle.cloudimportvideointelligence_v1p3beta1asvideointelligence# path = 'path_to_file'# project_id = 'gcp_project_id'# model_id = 'automl_classification_model_id'client=videointelligence.StreamingVideoIntelligenceServiceClient()model_path="projects/{}/locations/us-central1/models/{}".format(project_id,model_id)# Here we use classification as an example.automl_config=videointelligence.StreamingAutomlClassificationConfig(model_name=model_path)video_config=videointelligence.StreamingVideoConfig(feature=videointelligence.StreamingFeature.STREAMING_AUTOML_CLASSIFICATION,automl_classification_config=automl_config,)# config_request should be the first in the stream of requests.config_request=videointelligence.StreamingAnnotateVideoRequest(video_config=video_config)# Set the chunk size to 5MB (recommended less than 10MB).chunk_size=5*1024*1024# Load file content.# Note: Input videos must have supported video codecs. See# https://cloud.google.com/video-intelligence/docs/streaming/streaming#supported_video_codecs# for more details.stream=[]withio.open(path,"rb")asvideo_file:whileTrue:data=video_file.read(chunk_size)ifnotdata:breakstream.append(data)defstream_generator():yieldconfig_requestforchunkinstream:yieldvideointelligence.StreamingAnnotateVideoRequest(input_content=chunk)requests=stream_generator()# streaming_annotate_video returns a generator.# The default timeout is about 300 seconds.# To process longer videos it should be set to# larger than the length (in seconds) of the stream.responses=client.streaming_annotate_video(requests,timeout=600)forresponseinresponses:# Check for errors.ifresponse.error.message:print(response.error.message)breakforlabelinresponse.annotation_results.label_annotations:forframeinlabel.frames:print("At {:3d}s segment, {:5.1%}{}".format(frame.time_offset.seconds,frame.confidence,label.entity.entity_id,))
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2026-09-12 UTC."],[],[]]