Heygen Livekit Room Connection не работает последовательноJavascript

Форум по Javascript
Ответить
Anonymous
 Heygen Livekit Room Connection не работает последовательно

Сообщение Anonymous »

Я сталкиваюсь с проблемой во время запуска интерактивного аватара Heygen, который использует веб -питания для аудио и Livekit для синхронизации губ видео. Проблема, кажется, связана с подключением к комнате Livekit. Иногда он подключается и работает правильно, иногда начинается, а затем замораживает, и большую часть времени видео загружается, но не отвечает на текстовые подсказки, которые я отправляю. Комната LiveKit правильно подключена. Однако, несмотря на эти положительные показатели, видеопотока перерывов с перерывами без какого -либо предупреждения. Похоже, что соединение инициализируется правильно, но затем прекращает обновление или синхронизацию после запуска. Я тщательно рассмотрел документацию Heygen, но, к сожалению, нет четких рекомендаций по решению этой конкретной проблемы. Кроме того, пример кода в документации, по -видимому, нарушен - предоставленный аватар больше не доступен, и пример не работает успешно.

Код: Выделить всё

await room.connect(sessionInfo.url, sessionInfo.access_token);
< /code>
Соединение кажется хорошим (журналы консоли показывают успешные сообщения об подключении), но по какой -то причине видео анимация становится нестабильной.  < /p>
Вот мой фрагмент кода: < /p>
 // ------------------------------------------------------
// 1️⃣ Create + Start a new streaming session via Flask
// ------------------------------------------------------
async function createNewSession() {
try {
updateStatus("🔄 Creating streaming session (v2)…");

const res = await fetch("/api/session/create", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
avatar_name: avatarID.value,
voice_id: voiceID.value,
}),
});
if (!res.ok) throw new Error("Backend /create failed");

const data = await res.json();
sessionInfo = {
session_id: data.session_id,
url: data.url,
access_token: data.access_token,
session_token: data.session_token,
livekit_agent_token: data.livekit_agent_token,
realtime_endpoint: data.realtime_endpoint,
};

updateStatus("✅ Session info received from server");

// --- Connect to LiveKit Room ---
room = new LivekitClient.Room({
adaptiveStream: true,
dynacast: true,
videoCaptureDefaults: {
resolution: LivekitClient.VideoPresets.h720.resolution,
},
});

// ✅ Track LiveKit connection status
room
.on(LivekitClient.RoomEvent.Connected, () => {
updateStatus("✅ [LiveKit] Connected");
})
.on(LivekitClient.RoomEvent.Reconnecting, () => {
updateStatus("⚠️ [LiveKit] Reconnecting…");
})
.on(LivekitClient.RoomEvent.Reconnected, () => {
updateStatus("🔁 [LiveKit] Reconnected");
})
.on(LivekitClient.RoomEvent.Disconnected, (reason) => {
updateStatus("❌ [LiveKit] Disconnected: " + reason);
})
.on(LivekitClient.RoomEvent.ConnectionStateChanged, (state) => {
updateStatus(`🔄 [LiveKit] state → ${state}`);
});

// Handle room events
room.on(LivekitClient.RoomEvent.DataReceived, (message) => {
const data = new TextDecoder().decode(message);
console.log("Room message:", JSON.parse(data));
});

//  Handle media streams
mediaStream = new MediaStream();
room.on(LivekitClient.RoomEvent.TrackSubscribed, (track) => {
if (track.kind === "video" || track.kind === "audio") {
mediaStream.addTrack(track.mediaStreamTrack);
if (
mediaStream.getVideoTracks().length > 0 &&
mediaStream.getAudioTracks().length > 0
) {
mediaElement.srcObject = mediaStream;
mediaElement.autoplay = true;
//mediaElement.playsInline = true;
updateStatus("Media stream ready");
updateStatus(`🎬 Subscribed: ${track.kind}`);
}
}
});

// connect the vide lip-sync room
updateStatus("🔗 Connecting to LiveKit room…");
await room.connect(sessionInfo.url, sessionInfo.access_token);
updateStatus("✅ Connected to LiveKit room");

// connect the audio lip‑sync websocket
await connectWebSocket(sessionInfo.session_id, sessionInfo.session_token);

document.querySelector("#startBtn").disabled = true;
updateStatus("🚀 Session ready — send text to talk!");
} catch (err) {
console.error(err);
updateStatus(`❌ Error: ${err.message}`);
}
}
< /code>
У кого -нибудь столкнулся с аналогичной проблемой? Правильно синхронизируйте.json={
"version": "v2",
"avatar_id": "Tyler-insuit-20220721",
"voice": {"voice_id": "f5a3cb4edbfc4d37b5614ce118be7bc8",
"rate":1.0},
"quality": "high",
"video_encoding": "H264",
},
Моя учетная запись Heygen API pro с более чем 90 непогашенными кредитами.

Подробнее здесь: https://stackoverflow.com/questions/797 ... nsistently
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»