2013-06-18 10 views
8

Ich versuche, MP4-Video mit einer bestimmten Auflösung in Windows Phone 8 zu erfassen (um genau zu sein, 480x480). Ich weiß, dass ich keine anderen Größen als die Voreinstellungen verwenden kann, und 480x480 ist keine Voreinstellung. Wie transformiere ich ein aufgenommenes Video (z. B. 640x480) und schneide die Ober- und Unterseite, um es zu 480x480 zu machen? Alle kostenlosen oder Open-Source-Bibliotheken (die auf Windows Phone laufen) sind willkommen. Bitte antworten Sie nicht mit Antworten wie "Verwenden Sie einen externen Server", ich brauche eine On-Device-Lösung.Aufzeichnung (oder Umbildung nach Aufnahme) Video bei Nicht-Standard-Größe in Windows Phone 8

Antwort

1

Verwenden Sie die Windows.Phone.Media.Capture APIs und die AudioVideoCaptureDevice Klasse

Zweiter Parameter für AudioVideoCaptureDevice.OpenAsync - siehe this link - ist die Auflösung. Und Sie können die Auflösungen AudioVideoCaptureDevice.GetAvailableCaptureResolutions (Sensor) erhalten

EDIT: benutzerdefinierte Auflösungen einzustellen versuchen AudioVideoCaptureDevice.SetCaptureResolutionAsync

EDIT 2: Sie so etwas wie die folgende versuchen könnte aufgezeichnetes Video zu verwandeln: (kann nicht finden, wo ich habe den Code von soz an Autor!)

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 (Sensor)' nicht enthält nicht die gewünschte Auflösung (zB ich brauche 192x144) – CAMOBAP

+0

Änderungen sehen, und sehen Sie sich mit SetCaptureResolutionAsync –

+0

ich bereits verwenden 'GetAvailableCa ptureResolutions (CameraSensorLocation.Back) .Last() 'und es gibt 640x480 aber ich brauche' 192x144' – CAMOBAP