2013-06-18 12 views
8

Sto cercando di acquisire video MP4 a una risoluzione specifica in Windows Phone 8 (per essere specifici, 480x480). So che non posso usare dimensioni diverse dai preset e 480x480 non è un preset. Come trasformare un video catturato (come 640x480) e ritagliare la parte superiore e inferiore per renderlo 480x480? Tutte le librerie gratuite o open source (eseguite su Windows Phone) sono benvenute. Per favore non rispondere con risposte come "usa un server esterno", ho bisogno di una soluzione su dispositivo.Registrazione (o trasformazione dopo la registrazione) video a dimensioni non standard in Windows Phone 8

risposta

1

Utilizzare il Windows.Phone.Media.Capture API e la classe di AudioVideoCaptureDevice

Secondo parametro per AudioVideoCaptureDevice.OpenAsync - vedi this link - è la risoluzione. E si può ottenere utilizzando le risoluzioni AudioVideoCaptureDevice.GetAvailableCaptureResolutions (sensore)

EDIT: Per impostare risoluzioni personalizzate cercano AudioVideoCaptureDevice.SetCaptureResolutionAsync

EDIT 2: Si potrebbe provare qualcosa di simile a quanto segue per trasformare il video registrato: (non può trovare dove ho ottenuto il codice soz all'autore!)

StorageFolder isoStore = await ApplicationData.Current.LocalFolder.GetFolderAsync("Shared"); 
     var file = await isoStore.CreateFileAsync("foos1.wmv", CreationCollisionOption.ReplaceExisting); 
     using (var s = await file.OpenAsync(FileAccessMode.ReadWrite)) 
     { 
      Windows.Foundation.Size resolution = new Windows.Foundation.Size(640, 480); 
      avDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, 
       AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).Last()); 

      VideoBrush videoRecorderBrush = new VideoBrush(); 
      videoRecorderBrush.SetSource(avDevice); 

      viewfinderRectangle.Fill = videoRecorderBrush; 

      await avDevice.StartRecordingToStreamAsync(s); 

      Thread.Sleep(30000); 

      await avDevice.StopRecordingAsync(); 
     } 


     new MediaPlayerLauncher() 
     { 
      Media = new Uri(file.Path, UriKind.Relative), 
     }.Show(); 
+0

'AudioVideoCaptureDevice.GetAvailableCaptureResolutions (sensore)' non non contiene la risoluzione desiderata (ad esempio, ho bisogno di 192x144) – CAMOBAP

+0

Cfr modifiche, e guardo con SetCaptureResolutionAsync –

+0

utilizzo già 'GetAvailableCa ptureResolutions (CameraSensorLocation.Back) .Last() 'e restituisce 640x480 ma ho bisogno di' 192x144' – CAMOBAP