Feat : Change quality
This commit is contained in:
@@ -33,7 +33,7 @@ import { ObsController } from './obs.ts';
|
||||
import { StreamWatcher } from './watcher.ts';
|
||||
import { currentBuildId, runningBundlePath, selfUpdate } from './updater.ts';
|
||||
import { blankPage, closeWindow, delay as sleep, openUrl } from './browser.ts';
|
||||
import { FirefoxController } from './firefox.ts';
|
||||
import { FirefoxController, type StreamQualityOutcome } from './firefox.ts';
|
||||
import { describeFullscreen, type FullscreenOutcome } from './fullscreen.ts';
|
||||
import { sendHotkey } from './hotkey.ts';
|
||||
import { cpuUsagePercent, diskUsage, memoryUsage } from './system.ts';
|
||||
@@ -256,6 +256,8 @@ async function startCapture(params: Record<string, unknown>): Promise<unknown> {
|
||||
report('info', `Attente de ${Math.round(wait / 1000)} s avant le plein écran`);
|
||||
await sleep(wait);
|
||||
|
||||
await selectMaxStreamQuality();
|
||||
|
||||
const fullscreen = watcher.snapshotSettings.fullscreen;
|
||||
let fullscreenResult: unknown = 'ignoré';
|
||||
if (fullscreen.enabled) {
|
||||
@@ -412,6 +414,36 @@ async function restoreFullscreen(settings: FullscreenSettings): Promise<Fullscre
|
||||
return sendHotkey({ key: settings.key, windowMatch: settings.windowMatch });
|
||||
}
|
||||
|
||||
/**
|
||||
* Sélectionne la meilleure qualité offerte par le lecteur Stripchat.
|
||||
*
|
||||
* Sans effet hors mode BiDi : il n'existe aucun moyen d'interagir avec le
|
||||
* contenu de la page sans lui. Un échec ne bloque jamais l'enregistrement —
|
||||
* mieux vaut capturer une qualité non maximale que ne rien capturer du tout.
|
||||
*/
|
||||
async function selectMaxStreamQuality(): Promise<void> {
|
||||
const bidi = driver();
|
||||
const settings = watcher.snapshotSettings.streamQuality;
|
||||
if (!bidi || !settings.enabled) return;
|
||||
|
||||
await sleep(settings.delayMs);
|
||||
const result: StreamQualityOutcome = await bidi
|
||||
.selectMaxStreamQuality()
|
||||
.catch((err: Error) => ({ ok: false, reason: err.message }));
|
||||
|
||||
if (!result.ok) {
|
||||
report('warn', `Qualité du flux non réglée : ${result.reason}`, 'quality.failed');
|
||||
return;
|
||||
}
|
||||
report(
|
||||
'info',
|
||||
result.already
|
||||
? `Qualité du flux déjà au maximum (${result.label})`
|
||||
: `Qualité du flux réglée sur ${result.label}`,
|
||||
'quality.selected',
|
||||
);
|
||||
}
|
||||
|
||||
// --- Presets d'enregistrement ------------------------------------------------
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user