WinRT Toolkit Windows Phone 8.1使用CameraCaptureControl保存视频

时间:2015-11-19 17:08:35

标签: windows-phone-8.1 winrt-xaml-toolkit

我是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 个答案:

答案 0 :(得分:0)

使用await关键字,异步调用StartVideoCaptureAsync。 因此,只有在完成此异步任务后,才会执行下一行代码。 这意味着下面的代码行(以及所有下面的代码):

CapturedVideoElement.Visibility = Visibility.Visible

将在录制结束时执行。

因此,如果您需要在录制完成后执行一个方法,您可以在调用StartVideoCaptureAsync后将其放入。