Keep playhead visible for recorded streams
This commit is contained in:
@@ -1344,12 +1344,13 @@ function syncPlayhead() {
|
|||||||
const duration = state.duration;
|
const duration = state.duration;
|
||||||
const hasDuration = Number.isFinite(duration) && duration > 0;
|
const hasDuration = Number.isFinite(duration) && duration > 0;
|
||||||
const canScrub = state.seekable && hasDuration;
|
const canScrub = state.seekable && hasDuration;
|
||||||
|
const showPlayhead = Boolean(state.session);
|
||||||
const max = hasDuration ? duration : 1;
|
const max = hasDuration ? duration : 1;
|
||||||
const value = hasDuration ? clampNumber(currentTime, 0, max) : 0;
|
const value = hasDuration ? clampNumber(currentTime, 0, max) : 0;
|
||||||
const progress = hasDuration && max > 0 ? (value / max) * 100 : 0;
|
const progress = hasDuration && max > 0 ? (value / max) * 100 : 0;
|
||||||
|
|
||||||
elements.playhead.hidden = !canScrub;
|
elements.playhead.hidden = !showPlayhead;
|
||||||
elements.playhead.setAttribute('aria-hidden', String(!canScrub));
|
elements.playhead.setAttribute('aria-hidden', String(!showPlayhead));
|
||||||
elements.currentTime.textContent = formatTime(currentTime);
|
elements.currentTime.textContent = formatTime(currentTime);
|
||||||
elements.totalTime.textContent = formatTime(duration);
|
elements.totalTime.textContent = formatTime(duration);
|
||||||
elements.seek.max = String(max);
|
elements.seek.max = String(max);
|
||||||
|
|||||||
@@ -171,10 +171,13 @@ app.post('/api/session', async (request, response) => {
|
|||||||
|
|
||||||
const options = parsePlaybackOptions(request.body);
|
const options = parsePlaybackOptions(request.body);
|
||||||
const id = randomUUID();
|
const id = randomUUID();
|
||||||
|
const shouldProbeMetadata = METADATA_PROBE_ENABLED || canBestEffortResumeWithoutDuration({
|
||||||
const metadataStatus = METADATA_PROBE_ENABLED ? 'pending' : 'disabled';
|
sourceKind: source.kind,
|
||||||
|
originalUrl: url,
|
||||||
sessions.set(id, {
|
url: source.url,
|
||||||
|
});
|
||||||
|
const metadataStatus = shouldProbeMetadata ? 'pending' : 'disabled';
|
||||||
|
const session = {
|
||||||
id,
|
id,
|
||||||
url: source.url,
|
url: source.url,
|
||||||
originalUrl: url,
|
originalUrl: url,
|
||||||
@@ -189,12 +192,14 @@ app.post('/api/session', async (request, response) => {
|
|||||||
forceSplitPlayback: false,
|
forceSplitPlayback: false,
|
||||||
createdAt: Date.now(),
|
createdAt: Date.now(),
|
||||||
lastUsedAt: Date.now(),
|
lastUsedAt: Date.now(),
|
||||||
});
|
};
|
||||||
|
|
||||||
logInfo(`session created id=${shortId(id)} source=${source.kind} mode=${getSessionPlaybackConnectionMode(sessions.get(id))} fps=${options.fps} width=${options.width} quality=${options.quality}`);
|
sessions.set(id, session);
|
||||||
|
|
||||||
if (METADATA_PROBE_ENABLED) {
|
logInfo(`session created id=${shortId(id)} source=${source.kind} mode=${getSessionPlaybackConnectionMode(session)} fps=${options.fps} width=${options.width} quality=${options.quality}`);
|
||||||
startSessionMetadataProbe(sessions.get(id));
|
|
||||||
|
if (shouldProbeMetadata) {
|
||||||
|
startSessionMetadataProbe(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user