2015-11-19 5 views
0

Я довольно новичок в разработке Windows Phone 8.1, и в настоящее время я пытаюсь записать видео и сохранить его на Windows Phone. Однако я не знаю, как это можно сделать. У меня есть фрагмент кода ниже, который является кодом, выполняемым при нажатии кнопки запуска/остановки записи. Код берется из примера.WinRT Toolkit Windows Phone 8.1 save video wth CameraCaptureControl

Мои вопросы:

  1. Как _videoFile могут быть сохранены в VideoLibrary?
  2. Желательно, чтобы программа выполняла метод при остановке записи. Как получить имя файла видео в этом методе?

    private async void OnCaptureVideoButtonClick(object sender, RoutedEventArgs e) 
    { 
        if (!_capturingVideo) 
        { 
         //BtnStartStop.Content = "Stop"; 
         StartAppBarButton.Icon = new SymbolIcon(Symbol.Stop); 
         _capturingVideo = true; 
    
         _videoFile = await TestedControl.StartVideoCaptureAsync(KnownFolders.VideosLibrary, "capture.mp4"); 
         CapturedVideoElement.Visibility = Visibility.Visible; 
    
         IRandomAccessStreamWithContentType stream; 
    
         try 
         { 
          stream = await TryCatchRetry.RunWithDelayAsync<Exception, IRandomAccessStreamWithContentType>(
           _videoFile.OpenReadAsync(), 
           TimeSpan.FromSeconds(0.5), 
           10); 
         } 
         catch (Exception ex) 
         { 
          #pragma warning disable 4014 
    
          new MessageDialog(ex.Message, "Error").ShowAsync(); 
          #pragma warning restore 4014 
    
          return; 
         } 
    
         CapturedVideoElement.SetSource(stream, _videoFile.ContentType); 
        } 
        else 
        { 
         StartAppBarButton.Icon = new SymbolIcon(Symbol.Camera); 
         _capturingVideo = false; 
         #pragma warning disable 4014 
         await TestedControl.StopCapture(); 
    
          #pragma warning restore 4014 
        } 
    } 
    

ответ

0

Используя AWAIT ключевое слово, StartVideoCaptureAsync вызывается асинхронно. Итак, следующая строка кода будет выполнена только после завершения этой асинхронной задачи. Это означает, что строка кода ниже (и все последующие из них):

CapturedVideoElement.Visibility = Visibility.Visible 

будет выполнение в конце записи.

Итак, если вам нужно выполнить метод после завершения записи, вы можете просто положить его после вызова StartVideoCaptureAsync.