2016-04-14 10 views
2

'daki proje dosyasına kaydediyorum. Sesin cihaz mikrofonuna kaydedilmiş ancak nasıl kaydedileceğini bilmiyorum. MediaCapture öğesinin yardımıyla ve eğer evet ise, o zaman nasıl yapmalı?Kaydedilmiş sesi UWP

+0

yılında akışı kaydetmek? Google'da aradınız mı? Ne buldun? Ne işe yaramadı? – Wjdavis5

+1

Olası çoğaltılabilir [MediaElement dosyasını UWP'de proje dosyasına kaydet] (http://stackoverflow.com/questions/36619966/save-mediaelement-to-project-file-in-uwp) –

+0

Bunu aradım ama yapmadım ' Hiçbir şey bulamadığımdan beri bir şey denedim. –

cevap

0

Veritabanına nasıl yazılır ve bir dosyaya kaydedilir.

Bu kodu, test edilmediği için anında yazdım.

MediaEncodingProfile _Profile = Windows.Media.MediaProperties.MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High); 
    MediaTranscoder _Transcoder = new Windows.Media.Transcoding.MediaTranscoder(); 
    CancellationTokenSource _cts = new CancellationTokenSource(); 

    private void ConvertSteamToMp3() 
    { 
     IRandomAccessStream audio = buffer.CloneStream(); //your recoreded InMemoryRandomAccessStream 

     var folder = KnownFolders.MusicLibrary.CreateFolderAsync("MyCapturedAudio", CreationCollisionOption.OpenIfExists); 
     outputFile = await folder.CreateFileAsync("record.mp3", CreationCollisionOption.GenerateUniqueName); 

     using (IRandomAccessStream fileStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite)) 
     { 

      var preparedTranscodeResult = await _Transcoder.PrepareStreamTranscodeAsync(audio, fileStream, _Profile); 
      if (preparedTranscodeResult.CanTranscode) 
      { 
       var progress = new Progress<double>(TranscodeProgress); 
       await preparedTranscodeResult.TranscodeAsync().AsTask(_cts.Token, progress); 
      } 

      using (IOutputStream outputStream = fileStream.GetOutputStreamAt(0)) 
      { 
       using (DataWriter dataWriter = new DataWriter(outputStream)) 
       { 
        //TODO: Replace "Bytes" with the type you want to write. 
        dataWriter.WriteBytes(bytes); 
        await dataWriter.StoreAsync(); 
        dataWriter.DetachStream(); 
       } 

       await outputStream.FlushAsync(); 
      } 
     } 
    } 

Yoksa sadece denedim ne bir dosya

public async SaveToFile() 
{ 

    IRandomAccessStream audio = buffer.CloneStream(); //your recoreded InMemoryRandomAccessStream 
    var folder = KnownFolders.MusicLibrary.CreateFolderAsync("MyCapturedAudio", CreationCollisionOption.OpenIfExists); 
    outputFile = await folder.CreateFileAsync("record.mp3", CreationCollisionOption.GenerateUniqueName); 

     using (IRandomAccessStream fileStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite)) 
     { 
      await RandomAccessStream.CopyAndCloseAsync(audio.GetInputStreamAt(0), fileStream.GetOutputStreamAt(0)); 
      await audio.FlushAsync(); 
      audio.Dispose(); 
     } 
    }); 
} 
+0

Proje dosyalarını, özellikle/Assest/Sounds bölümünden kaydetmek istiyorum. Bunu nerede değiştirebilirim? –

+0

'StorageFolder klasörünü kullanabilirsiniz = ApplicationData.Current.LocalFolder;' Yalnızca varlıklarını salt okunur olarak kaydetmeyi düşünmüyorum. – Stamos

+0

Bunu Debug/AppX/Assets'e kaydetmeyi başardım. Teşekkür ederim! –