2016-03-24 28 views
1

私はUWPでwinphoneのコールレコーダーを作成しようとしています。私はオーディオグラフでこれをしようとしています。入力デバイス(マイク)、出力デバイス(スピーカー)のノードを作成し、それらをファイル(wave/mp3)に送信する必要があります。audiograph c#UWP

例外が表示されます。

 AudioGraph graph; 
     AudioDeviceInputNode deviceInputNode; 
     AudioDeviceOutputNode deviceOutputNode; 
     AudioFileOutputNode fileOutputNode; 

     private async Task InitAudiographAsync() 
     { 

      AudioGraphSettings settings = new AudioGraphSettings(AudioRenderCategory.Speech); 
      CreateAudioGraphResult result = await AudioGraph.CreateAsync(settings); 
      if (result.Status == AudioGraphCreationStatus.Success) 
      { 
       graph = result.Graph; 

       CreateAudioDeviceOutputNodeResult deviceOutputNodeResult = await graph.CreateDeviceOutputNodeAsync(); 

       if (deviceOutputNodeResult.Status == AudioDeviceNodeCreationStatus.Success) 
       { 
        deviceOutputNode = deviceOutputNodeResult.DeviceOutputNode; 

        var microphone = await DeviceInformation.CreateFromIdAsync(
      MediaDevice.GetDefaultAudioCaptureId(AudioDeviceRole.Default)); 

        var inProfile = MediaEncodingProfile.CreateWav(AudioEncodingQuality.High); 

        var deviceInputNodeResult = await graph.CreateDeviceInputNodeAsync(MediaCategory.Speech, inProfile.Audio, microphone); 

        if (deviceInputNodeResult.Status == AudioDeviceNodeCreationStatus.Success) 
        { 
         deviceInputNode = deviceInputNodeResult.DeviceInputNode; 

         FileSavePicker saveFilePicker = new FileSavePicker(); 
         saveFilePicker.FileTypeChoices.Add("Windows Media Audio", new List<string>() { ".wma" }); 
         saveFilePicker.FileTypeChoices.Add("MPEG Audio Layer-3", new List<string>() { ".mp3" }); 
         saveFilePicker.SuggestedFileName = "New Audio Track"; 
         StorageFile file = await saveFilePicker.PickSaveFileAsync(); 

         // File can be null if cancel is hit in the file picker 
         if (file == null) 
         { 
          return; 
         } 

         MediaEncodingProfile mediaEncodingProfile; 
         switch (file.FileType.ToString().ToLowerInvariant()) 
         { 
          case ".mp3": 
           mediaEncodingProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High); 
           break; 
          case ".wav": 
           mediaEncodingProfile = MediaEncodingProfile.CreateWav(AudioEncodingQuality.High); 
           break; 
          default: 
           throw new ArgumentException(); 
         } 

         CreateAudioFileOutputNodeResult fileOutputNodeResult = await graph.CreateFileOutputNodeAsync(file, mediaEncodingProfile); 

         if (fileOutputNodeResult.Status == AudioFileNodeCreationStatus.Success) 
         { 
          fileOutputNode = fileOutputNodeResult.FileOutputNode; 
          deviceInputNode.AddOutgoingConnection(deviceOutputNode); 
          deviceInputNode.AddOutgoingConnection(fileOutputNode); 
          graph.Start(); 
         } 

        } 
       } 
      } 
     } 

答えて

3

マニフェスト\機能でマイクロフォンアクセスとファイルアクセスを確認しましたか?アクセス拒否例外が発生していますか?