WinRT Toolkit Windows Phone 8.1 сохранить видео с помощью CameraCaptureControl

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

Мои вопросы:

  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
        }
    }
    

1 ответ

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

CapturedVideoElement.Visibility = Visibility.Visible

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

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

Другие вопросы по тегам