簡體   English   中英

將錄制的聲音保存到UWP中的項目文件中

[英]Save recorded sound to project file in UWP

我用設備的麥克風錄制了聲音,但不知道如何保存。 是在MediaCapture元素的幫助下,如果是,那么該怎么做?

這是一個基本的想法,如何使用Datawriter轉換為mp3並保存在文件中。

我即時編寫了此代碼,因此未經測試。

    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();
            }
        }
    }

或者只是將流保存到文件中

    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();
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM