WinRT porta con se un set ricco di API che coprono la maggior parte delle esigenze che possiamo avere sui dispositivi mobili e non. Alcune di queste possono essere esclusiva di Windows 8.1 o di Windows Phone 8.1. Per questo dispositivo troviamo a disposizione la classe ScreenCapture, la quale ci permette di cattura l'audio e il video dell'intera app, permettendoci di salvare clip, utili per diagnostica o per generare video usando direttamente lo XAML.
Utilizzarla è piuttosto semplice, perché la procedura è del tutto simile alla cattura di una foto o di un video. Ciò che cambia è la sorgente che appunto viene dallo ScreenCapture. Partiamo quindi dall'ottenere tale oggetto chiedendo l'autorizzazione all'utente con un'interfaccia fornita automaticamente dal sistema.
// Ottengo l'istanza per l'app corrente
// Scatta l'autorizzazione da parte dell'utente
ScreenCapture screenCapture;
try
{
screenCapture = ScreenCapture.GetForCurrentView();
}
catch (UnauthorizedAccessException)
{
// Permesso negato
return;
}Ottenuta la sorgente possiamo istanziare un MediaCapture specificando come sorgente audio/video lo ScreenCapture stesso.
// Impostazioni di cattura
var settings = new MediaCaptureInitializationSettings();
if (!screenCapture.IsVideoSuspended)
settings.VideoSource = screenCapture.VideoSource;
settings.StreamingCaptureMode = StreamingCaptureMode.Video;A questo punto possiamo inizializzare la sessione e procedere, per esempio, alla registrazione diretta su un file MP4, come nell'esempio.
// Inizializzo la sessione di cattura
this.mediaCapture = new MediaCapture();
await this.mediaCapture.InitializeAsync(settings);
// Registro su file
var file = await KnownFolders.CameraRoll.CreateFileAsync("screen.mp4", CreationCollisionOption.ReplaceExisting);
var profile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto);
await this.mediaCapture.StartRecordToStorageFileAsync(profile, file);Dobbiamo precisare che la sessione di cattura funziona solo se l'app è in foreground e si interrompe automaticamente nel momento in cui l'utente esce dall'app. Non possiamo quindi catturare sequenze esterne alla nostra app. Inoltre, la cattura non funziona se l'app sta riproducendo un video protetto con DRM.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evidenziare una porzione di testo in un pagina dopo una navigazione
Il nuovo persistent state in Blazor
Semplificare i deployment con le label in Azure Container App
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Blue/Green Release in locale con .NET Aspire
Integrare OpenAI tramite Aspire
Keynote Global Azure 2026 - ASPItalia.com
How to be a DevOps engineer in the AI era
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Come automatizzare il download dei report di billing da GitHub Enterprise
Creare un indice su una colonna JSON in SQL Server
Utilizzare le librerie native di .NET per comprimere uno o più file in formato ZIP


