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
Applicare un filtro per recuperare alcune issue di GitHub
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Managed deployment strategy in Azure DevOps
Utilizzare i variable font nel CSS
Eseguire script pre e post esecuzione di un workflow di GitHub
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Loggare le query più lente con Entity Framework
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare Copilot con Azure Cosmos DB
Referenziare un @layer più alto in CSS
.NET Aspire per applicazioni distribuite
I più letti di oggi
- #lightswitch 2012 supporta nativamente #html5, #jquery e #jquerymobile. è stato mostrato girare su #ipad a #msteched
- 6 giorni al lancio di #netfx4 e #vs10ita. segui il nostro speciale su http://u.aspitalia.com/gh
- Una preview della prossima versione di #VisualStudio con cui creare #metrostyle app http://aspitalia.com/build-win8 #BldWin
- #vs14 ctp2 è disponibile come VM in #azure o per il download. supporto per il touch e tutte novità su https://aspit.co/awc
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- #IE10 disponibile al download da subito: http://aspitalia.com/vf http://aspitalia.com/mix-11 #mix11
- Viene mostrata la nuova start screen di Windows Phone 8 https://aspit.co/wp-summit #WPSummit