Cuando pasas un video a la API de Video Intelligence, puedes pasar un URI de Cloud Storage o incorporar datos de video directamente en el campo content
de la solicitud, que debe estar codificado en base64.
Uso de la línea de comandos
Dentro de una solicitud gRPC, simplemente puedes escribir los datos binarios directamente; sin embargo, JSON se utiliza para realizar una solicitud REST. JSON es un formato de texto que no admite directamente datos binarios, por lo que deberás convertir estos datos binarios en texto mediante la codificación Base64.
La mayoría de los entornos de desarrollo contienen una utilidad base64
nativa para codificar un objeto binario en datos de texto ASCII. Para codificar un archivo, haz lo siguiente:
Linux
Codifica el archivo con la herramienta de línea de comandos base64
y asegúrate de evitar el ajuste de línea con la marca -w 0
:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
macOS
Codifica el archivo con la herramienta de línea de comandos base64
:
base64 -i INPUT_FILE -o OUTPUT_FILE
Windows
Codifica el archivo con la herramienta Base64.exe
:
certutil -encodehex SOURCE_VIDEO_FILE > DEST_TEXT_FILE 0x40000001
PowerShell
Codifica el archivo con el método Convert.ToBase64String
:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE
Crea un archivo de solicitud JSON e intercala los datos codificados en Base64:
JSON
{ "requests":[ { "image":{ "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." }, "features": [ { "type":"LABEL_DETECTION", "maxResults":1 } ] } ] }
Uso de las bibliotecas cliente
La incorporación de datos binarios en solicitudes a través de editores de texto no es conveniente ni práctico. En la práctica, incorporarás archivos codificados en Base64 dentro del código del cliente. Todos los lenguajes de programación compatibles tienen mecanismos incorporados para el contenido de codificación en Base64:
Python
En Python, puedes codificar archivos de video codificados en Base64 de la siguiente manera:
# Import the base64 encoding library.
import base64
# Pass the video data to an encoding function.
def encode_video(video):
video_content = video.read()
return base64.b64encode(video_content)
Node.js
En Node.js, codifica en Base64 los archivos de video de la siguiente manera:
// Read the file into memory.
var fs = require('fs');
var videoFile = fs.readFileSync('/path/to/file');
// Convert the video data to a Buffer and base64 encode it.
var encoded = new Buffer(videoFile).toString('base64');
Java
En Java, puedes codificar archivos de imagen en base64 de la siguiente manera:
// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;
// Encode the video.
byte[] videoData = Base64.encodeBase64(videoFile.getBytes());