无法在录音应用中创建暂停和恢复功能.视窗 8.1 应用商店应用程序



我正在尝试使用以下代码生成暂停和恢复功能。

private async void RecordBtn_Click(object sender, RoutedEventArgs e)
{
   if (IsNewRecording)
   {
         mediaFile = await Windows.Storage.KnownFolders.MusicLibrary.CreateFileAsync("newFile.mp3", Windows.Storage.CreationCollisionOption.ReplaceExisting);
         MediaEncodingProfile encodingProfile = null;
         switch (SelectedFormat)
         {
             case AudioEncodingFormat.Mp3:
             encodingProfile = MediaEncodingProfile.CreateMp3(SelectedQuality);
             break;
             case AudioEncodingFormat.Mp4:
             encodingProfile = MediaEncodingProfile.CreateM4a(SelectedQuality);
             break;
             case AudioEncodingFormat.Wma:
             encodingProfile = MediaEncodingProfile.CreateWma(SelectedQuality);
             break;
             default:
             throw new ArgumentOutOfRangeException();
          }
          await CaptureMedia.StartRecordToStorageFileAsync(encodingProfile, mediaFile);
          UpdateRecordingControls(RecordingMode.Recording);
          DishTimer.Start();
          IsNewRecording = false;
          RecordBtn.Content = "Pause";
          return;
     }
    else if (!IsNewRecording && !IsPaused)
    {
         UpdateRecordingControls(RecordingMode.Paused);
         DishTimer.Stop();
         await CaptureMedia.StopRecordAsync();
         IsPaused = true;
         RecordBtn.Content = "Resume";
         return;
     }
     else if (!IsNewRecording && IsPaused)
     {
          MediaEncodingProfile encodingProfile = null;
          encodingProfile = MediaEncodingProfile.CreateMp3(SelectedQuality);
          await CaptureMedia.StartRecordToStorageFileAsync(encodingProfile, mediaFile);
          DishTimer.Start();
          IsPaused = false;
          RecordBtn.Content = "Pause";
          return;
     }
 }

用于停止录制。

private async void StopBtn_Click(object sender, RoutedEventArgs e)
{
      await CaptureMedia.StopRecordAsync();
      UpdateRecordingControls(RecordingMode.Stopped); 
      DishTimer.Stop();
      InitTimer();
      IsNewRecording = true;
      RecordBtn.Content = "Record";   
 }

以及初始化媒体捕获。

private async Task InitMediaCapture()
{
     CaptureMedia = new MediaCapture();
     captureInitSettings = new MediaCaptureInitializationSettings();
     captureInitSettings.StreamingCaptureMode = StreamingCaptureMode.Audio;
     await CaptureMedia.InitializeAsync(captureInitSettings);
     CaptureMedia.Failed += MediaCaptureOnFailed;
     CaptureMedia.RecordLimitationExceeded += MediaCaptureOnRecordLimitationExceeded;
}

OnNavigatedTo 事件如下所示。

protected async override void OnNavigatedTo(NavigationEventArgs e)
 {
      await InitMediaCapture();// Mic disconnection Exception thrown if no device is found
      LoadAudioEncodings();
      LoadAudioQualities();
      UpdateRecordingControls(RecordingMode.Initializing);
      InitTimer();
 }

我面临的另一个问题是,当应用程序最小化或窗口锁定并再次开始录制时MediaCapture引发失败事件,并给出以下错误消息。

错误消息是:"媒体设备无法从停止状态变为暂停状态",即使MediaCapture没有 Windows 8.1 中支持的 Pause 方法也是如此。

此外,目前录音保存在音乐库文件夹中,但我可以做些什么将录音保存在 C 盘的特定文件夹中。

请帮我这个!

我没有流式传输的经验,但是在保存部分,您可以使用FileSavePicker。根据您的代码,记录应生成一个存储文件。

var fileSavePicker = new FileSavePicker();
fileSavePicker.FileTypeChoices.Add(".mp3 audio", new List { ".mp3" });
fileSavePicker.DefaultFileExtension = “.mp3”;
fileSavePicker.SuggestedFileName = “name.mp3”;
fileSavePicker.SettingsIdentifier = "pickerName";
fileSavePicker.SuggestedSaveFile = //your storage file here
fileSavePicker.SuggestedStartLocation = //select start location
var file = await fileSavePicker.PickSaveFileAsync();
if (file != null)
{
    Windows.Storage.CachedFileManager.DeferUpdates(file);
    //override file with content, text example below
    //await Windows.Storage.FileIO.WriteTextAsync(file, "yourconten");
    Windows.Storage.Provider.FileUpdateStatus status = 
        await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file);
    if (status == Windows.Storage.Provider.FileUpdateStatus.Complete)
    {
        //operation done
    }
    else
    {
        //something went wrong
    }
}

详细信息: https://msdn.microsoft.com/en-us/windows/uwp/files/quickstart-save-a-file-with-a-picker

最新更新