0

我对 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
        }
    }
    
4

1 回答 1

0

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

CapturedVideoElement.Visibility = Visibility.Visible

将在录制结束时执行。

所以如果你需要在录制完成后执行某个方法,你可以把它放在 StartVideoCaptureAsync 的调用之后。

于 2015-12-08T12:29:03.127 回答