כשמעבירים סרטון ל-Video Intelligence API, אפשר להעביר URI של Cloud Storage, או להטמיע נתוני סרטון ישירות בשדה content של הבקשה, שצריך להיות מקודד ב-base64.
שימוש בשורת הפקודה
בבקשת gRPC, אפשר פשוט לכתוב נתונים בינאריים ישירות. עם זאת, כשמבצעים בקשת REST, משתמשים ב-JSON. JSON הוא פורמט טקסט שלא תומך ישירות בנתונים בינאריים, ולכן צריך להמיר נתונים בינאריים כאלה לטקסט באמצעות קידוד Base64.
רוב סביבות הפיתוח מכילות כלי עזר מקורי של base64 לקידוד קובץ בינארי לנתוני טקסט ב-ASCII. כדי לקודד קובץ:
Linux
מקודדים את הקובץ באמצעות הכלי base64 בשורת הפקודה, ומוודאים שמונעים גלישת שורות באמצעות הדגל -w 0:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
macOS
מקודדים את הקובץ באמצעות הכלי base64 של שורת הפקודה:
base64 -i INPUT_FILE -o OUTPUT_FILE
Windows
מקודדים את הקובץ באמצעות הכלי Base64.exe:
certutil -encodehex SOURCE_VIDEO_FILE > DEST_TEXT_FILE 0x40000001
PowerShell
מבצעים קידוד של הקובץ באמצעות ה-method Convert.ToBase64String:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE
יוצרים קובץ בקשת JSON, ומוסיפים את הנתונים בקידוד base64:
JSON
{ "requests":[ { "image":{ "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." }, "features": [ { "type":"LABEL_DETECTION", "maxResults":1 } ] } ] }
שימוש בספריות לקוח
הטמעה של נתונים בינאריים בבקשות באמצעות עורכי טקסט היא לא רצויה ולא מעשית. בפועל, תטמיעו קבצים בקידוד base64 בקוד של הלקוח. לכל שפות התכנות הנתמכות יש מנגנונים מובנים לקידוד תוכן ב-Base64.
Python
ב-Python, מקודדים קובצי וידאו בקידוד Base64 באופן הבא:
# 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
ב-Node.js, מקודדים קובצי וידאו בקידוד Base64 באופן הבא:
// 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
ב-Java, אפשר לקודד קובצי תמונה ב-Base64 באופן הבא:
// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;
// Encode the video.
byte[] videoData = Base64.encodeBase64(videoFile.getBytes());