Make watch party worker stream more reliably
This commit is contained in:
parent
536ea2eff1
commit
926399502f
3 changed files with 22 additions and 1 deletions
|
|
@ -28,4 +28,5 @@ WATCHPARTY_STREAM_BITRATE_KBPS=2000
|
|||
WATCHPARTY_STREAM_MAX_BITRATE_KBPS=2500
|
||||
WATCHPARTY_STREAM_CODEC=H264
|
||||
WATCHPARTY_STREAM_PRESET=ultrafast
|
||||
WATCHPARTY_STREAM_TYPE=camera
|
||||
WATCHPARTY_STREAM_HARDWARE_ACCELERATION=false
|
||||
|
|
|
|||
|
|
@ -30,4 +30,5 @@ WATCHPARTY_STREAM_BITRATE_KBPS=2000
|
|||
WATCHPARTY_STREAM_MAX_BITRATE_KBPS=2500
|
||||
WATCHPARTY_STREAM_CODEC=H264
|
||||
WATCHPARTY_STREAM_PRESET=ultrafast
|
||||
WATCHPARTY_STREAM_TYPE=camera
|
||||
WATCHPARTY_STREAM_HARDWARE_ACCELERATION=false
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ const STREAM_BITRATE_KBPS = Number(process.env.WATCHPARTY_STREAM_BITRATE_KBPS ||
|
|||
const STREAM_MAX_BITRATE_KBPS = Number(process.env.WATCHPARTY_STREAM_MAX_BITRATE_KBPS || "2500");
|
||||
const STREAM_CODEC = String(process.env.WATCHPARTY_STREAM_CODEC || "H264").trim().toUpperCase();
|
||||
const STREAM_PRESET = String(process.env.WATCHPARTY_STREAM_PRESET || "ultrafast").trim().toLowerCase();
|
||||
const STREAM_TYPE = String(process.env.WATCHPARTY_STREAM_TYPE || "camera").trim().toLowerCase();
|
||||
const STREAM_HARDWARE_ACCELERATION = ["1", "true", "yes", "on"].includes(
|
||||
String(process.env.WATCHPARTY_STREAM_HARDWARE_ACCELERATION || "").trim().toLowerCase()
|
||||
);
|
||||
|
|
@ -152,6 +153,10 @@ function streamOptions() {
|
|||
return options;
|
||||
}
|
||||
|
||||
function playOptions() {
|
||||
return STREAM_TYPE === "go-live" ? { type: "go-live" } : { type: "camera" };
|
||||
}
|
||||
|
||||
function streamUrlAtOffset(url, startSeconds) {
|
||||
const parsed = new URL(url);
|
||||
parsed.searchParams.set("StartTimeTicks", String(Math.max(0, Math.floor(startSeconds)) * 10000000));
|
||||
|
|
@ -331,6 +336,20 @@ async function startPlayback(session, playback, startSeconds = 0) {
|
|||
session.workerStatus = "streaming";
|
||||
session.manualStop = false;
|
||||
session.lastError = "";
|
||||
const playMode = playOptions();
|
||||
console.log(
|
||||
"[worker] starting playback",
|
||||
JSON.stringify(
|
||||
{
|
||||
sessionId: session.workerSessionId,
|
||||
title: session.currentTitle,
|
||||
mode: playMode.type,
|
||||
url: input,
|
||||
},
|
||||
null,
|
||||
2,
|
||||
),
|
||||
);
|
||||
|
||||
const options = streamOptions();
|
||||
const prepared = streamingStack.prepareStream(
|
||||
|
|
@ -354,7 +373,7 @@ async function startPlayback(session, playback, startSeconds = 0) {
|
|||
session.workerStatus = "error";
|
||||
});
|
||||
|
||||
streamingStack.playStream(output, runtime.streamer, undefined, abortController.signal)
|
||||
streamingStack.playStream(output, runtime.streamer, playMode, abortController.signal)
|
||||
.then(() => {
|
||||
if (session.manualStop || abortController.signal.aborted) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue