Skip to content

Commit a69a830

Browse files
committed
refactor: update real-time input message structure to differentiate between text, audio, and video types.
1 parent 239adea commit a69a830

2 files changed

Lines changed: 14 additions & 21 deletions

File tree

gemini-live-ephemeral-tokens-websocket/frontend/geminilive.js

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -368,18 +368,12 @@ class GeminiLiveAPI {
368368
}
369369

370370
sendTextMessage(text) {
371-
const textMessage = {
372-
clientContent: {
373-
turns: [
374-
{
375-
role: "user",
376-
parts: [{ text: text }],
377-
},
378-
],
379-
turnComplete: true,
371+
const message = {
372+
realtimeInput: {
373+
text: text,
380374
},
381375
};
382-
this.sendMessage(textMessage);
376+
this.sendMessage(message);
383377
}
384378

385379
sendToolResponse(toolCallId, response) {
@@ -394,16 +388,15 @@ class GeminiLiveAPI {
394388
}
395389

396390
sendRealtimeInputMessage(data, mimeType) {
397-
const message = {
398-
realtimeInput: {
399-
mediaChunks: [
400-
{
401-
mimeType: mimeType,
402-
data: data,
403-
},
404-
],
405-
},
406-
};
391+
const blob = { mimeType, data };
392+
const message = { realtimeInput: {} };
393+
394+
if (mimeType.startsWith("audio/")) {
395+
message.realtimeInput.audio = blob;
396+
} else if (mimeType.startsWith("image/") || mimeType.startsWith("video/")) {
397+
message.realtimeInput.video = blob;
398+
}
399+
407400
this.sendMessage(message);
408401
this.addToBytesSent(data);
409402
}

gemini-live-genai-python-sdk/gemini_live.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ async def send_video():
6464
chunk = await video_input_queue.get()
6565
logger.info(f"Sending video frame to Gemini: {len(chunk)} bytes")
6666
await session.send_realtime_input(
67-
media=types.Blob(data=chunk, mime_type="image/jpeg")
67+
video=types.Blob(data=chunk, mime_type="image/jpeg")
6868
)
6969
except asyncio.CancelledError:
7070
pass

0 commit comments

Comments
 (0)