2015-11-19 85 views
0

我是Windows Phone 8.1开发中的新手,我目前正在尝试录制视频并将其存储在Windows Phone上。但是,我不知道如何做到这一点。下面是一些代码摘录,它是在按下开始/停止记录按钮时执行的代码。代码取自一个例子。WinRT工具包Windows Phone 8.1保存视频与摄像头捕捉控制

我的问题:

  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的调用之后将其放入。