예제 #1
0
        public async void Record(object sender, RoutedEventArgs e)
        {
            // begin recording
            if (StartRecording == false)
            {
                //await Initialize();
                //await DeleteExistingFile();
                if (record_buffer != null)
                {
                    record_buffer.Dispose();
                }
                record_buffer = new InMemoryRandomAccessStream();
                MediaCaptureInitializationSettings settings =
                    new MediaCaptureInitializationSettings
                {
                    StreamingCaptureMode = StreamingCaptureMode.Audio
                };
                captureManager_record = new MediaCapture();
                await captureManager_record.InitializeAsync(settings);

                await captureManager_record.StartRecordToStreamAsync(
                    MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), record_buffer);

                StartRecording = true;
            }
            // stop recording
            else
            {
                await captureManager_record.StopRecordAsync();

                //SaveAudioToFile();
                //SaveToFile(record_buffer, false);
                StartRecording = false;
            }
        }
예제 #2
0
        public async void CaptureAudio()
        {
            AudioGraphSettings audioGraphSettings = new AudioGraphSettings(Windows.Media.Render.AudioRenderCategory.Speech);
            var result = await AudioGraph.CreateAsync(audioGraphSettings);

            if (result.Status != AudioGraphCreationStatus.Success)
            {
                return;
            }
            _audioGraph = result.Graph;

            var deviceInputNodeResult = await _audioGraph.CreateDeviceInputNodeAsync(Windows.Media.Capture.MediaCategory.Speech);

            if (deviceInputNodeResult.Status != AudioDeviceNodeCreationStatus.Success)
            {
                return;
            }
            var deviceInputNode = deviceInputNodeResult.DeviceInputNode;

            _audioFile = await Windows.Storage.ApplicationData.Current.TemporaryFolder
                         .CreateFileAsync("speech", CreationCollisionOption.ReplaceExisting);

            var mediaEncodingProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
            var fileOutputNodeResult = await _audioGraph.CreateFileOutputNodeAsync(_audioFile, mediaEncodingProfile);

            if (fileOutputNodeResult.Status != AudioFileNodeCreationStatus.Success)
            {
                return;
            }
            var fileOutputNode = fileOutputNodeResult.FileOutputNode;

            deviceInputNode.AddOutgoingConnection(fileOutputNode);

            _audioGraph.Start();
        }
        public async void StartRecord(string label, uint quality)
        {
            try
            {
                if (mode == RecordMode.AUDIO)
                {
                    StorageFile file = await videoStore.CreateFileAsync($"{label}.mp3", CreationCollisionOption.GenerateUniqueName);

                    await MediaCap.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), file);
                }
                else if (mode == RecordMode.VIDEO || mode == RecordMode.VIDEOAUDIO)
                {
                    // Choose quality based recording
                    MediaCap.SetEncoderProperty(MediaStreamType.VideoRecord, new Guid(0x1c0608e9, 0x370c, 0x4710, 0x8a, 0x58, 0xcb, 0x61, 0x81, 0xc4, 0x24, 0x23), PropertyValue.CreateUInt32(3));
                    // Set quality level
                    MediaCap.SetEncoderProperty(MediaStreamType.VideoRecord, new Guid(0xfcbf57a3, 0x7ea5, 0x4b0c, 0x96, 0x44, 0x69, 0xb4, 0x0c, 0x39, 0xc3, 0x91), PropertyValue.CreateUInt32(quality));

                    StorageFile file = await videoStore.CreateFileAsync($"{label}.mp4", CreationCollisionOption.GenerateUniqueName);

                    await MediaCap.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto), file);
                }
                else
                {
                    IsRecording = false;
                }
                IsRecording = true;
                Log.Error("Began Recording");
            }
            catch (Exception ex)
            {
                Log.Error($"Failed to record:\t{ex}");
            }
        }
예제 #4
0
        private async void StartRecord()
        {
            if (BtnColVis)
            {
                LogoBack.Visibility             = Visibility.Visible;
                LogoBack.Opacity                = 1;
                LogoBackOpacitySmall.Visibility = Visibility.Visible;
                LogoBackOpacityBig.Visibility   = Visibility.Visible;
                Logo.Visibility     = Visibility.Collapsed;
                StopLogo.Visibility = Visibility.Visible;
                BtnColVis           = false;
                sb1.Begin();



                //开始录音
                //micphoneStorageFile = await KnownFolders.MusicLibrary.CreateFileAsync(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);
                //micphoneStorageFile = await KnownFolders.RemovableDevices.CreateFileAsync(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);
                StorageFolder folder2 = await KnownFolders.MusicLibrary.CreateFolderAsync(DateTime.Now.ToString("yyyy-MM-dd"), CreationCollisionOption.OpenIfExists);

                micphoneStorageFile = await folder2.CreateFileAsync(DateTime.Now.ToString("yyyy=MM=dd hh=mm=ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);

                await micphone.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), this.micphoneStorageFile);
            }
        }
예제 #5
0
        private async void RecordButton_Click(object sender, RoutedEventArgs e)
        {
            MediaEncodingProfile encodingProfile = null;

            switch (_selectedFormat)
            {
            case AudioEncodingFormat.Mp3:
                encodingProfile = MediaEncodingProfile.CreateMp3(_encodingQuality);
                break;

            case AudioEncodingFormat.Mp4:
                encodingProfile = MediaEncodingProfile.CreateM4a(_encodingQuality);
                break;

            case AudioEncodingFormat.Wma:
                encodingProfile = MediaEncodingProfile.CreateWma(_encodingQuality);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            _audioStream = new InMemoryRandomAccessStream();
            await _mediaCapture.StartRecordToStreamAsync(encodingProfile, _audioStream);

            UpdateRecordingControls(RecordingMode.Recording);
            _timer.Start();
        }
예제 #6
0
        //void logo_PointerExited(object sender, PointerRoutedEventArgs e)
        //{
        //    logo.PointerExit();
        //}

        //void logo_PointerEntered(object sender, PointerRoutedEventArgs e)
        //{
        //    logo.PointerEnter();
        //}

        async void logo_Tapped(object sender, TappedRoutedEventArgs e)
        {
            if (!b)
            {
                //StartRecord();
                file = await folder.CreateFileAsync(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);

                await micphone.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), file);

                b = true;
                logo.StartFlash();
            }
            else
            {
                //StopRecord();
                await micphone.StopRecordAsync();

                var stream = await file.OpenAsync(FileAccessMode.Read);

                mediaElement.SetSource(stream, file.FileType);
                mediaElement.AutoPlay = false;
                b = false;
                logo.StopFlash();

                obs.Add(file.Name);
            }
        }
    public ConvertToMp3Manager(StorageFile sourceAudio, StorageFile destinationAudio, AudioFormat AudioType = AudioFormat.MP3, AudioEncodingQuality audioEncodingQuality = AudioEncodingQuality.High)
    {
        if (sourceAudio == null || destinationAudio == null)
        {
            throw new ArgumentNullException("sourceAudio and destinationAudio cannot be null");
        }
        switch (AudioType)
        {
        case AudioFormat.AAC:
        case AudioFormat.M4A:
            profile = MediaEncodingProfile.CreateM4a(audioEncodingQuality);
            break;

        case AudioFormat.MP3:
            profile = MediaEncodingProfile.CreateMp3(audioEncodingQuality);
            break;

        case AudioFormat.WMA:
            profile = MediaEncodingProfile.CreateWma(audioEncodingQuality);
            break;
        }
        this.SourceAudio      = sourceAudio;
        this.DestinationAudio = destinationAudio;
        this.AudioFormat      = AudioType;
        this.AudioQuality     = audioEncodingQuality;
        this.TransCoder       = new MediaTranscoder();
    }
예제 #8
0
        private async void Record_click(object sender, RoutedEventArgs e)
        {
            MediaEncodingProfile encodingProfile = null;

            switch (selectedFormat)
            {
            case AudioEncodingFormat.Mp3:
                encodingProfile = MediaEncodingProfile.CreateMp3(SelectedQuality);
                break;

            case AudioEncodingFormat.Mp4:
                encodingProfile = MediaEncodingProfile.CreateMp3(SelectedQuality);
                break;

            case AudioEncodingFormat.Wma:
                encodingProfile = MediaEncodingProfile.CreateWav(SelectedQuality);
                break;

            case AudioEncodingFormat.Avi:
                encodingProfile = MediaEncodingProfile.CreateMp3(SelectedQuality);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            AudioStream = new InMemoryRandomAccessStream();
            await CaptureMedia.StartRecordToStreamAsync(encodingProfile, AudioStream);

            UpdateRecordingControls(RecordingMode.Recording);
            DishTImer.Start();
        }
예제 #9
0
        private async void RecordButtonClickHandler(object sender, RoutedEventArgs e)
        {
            await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                if (isRecording)
                {
                    return;
                }

                recordButton.Visibility     = Visibility.Collapsed;
                stopRecordButton.Visibility = Visibility.Visible;
                playButton.IsEnabled        = false;
                StartRecordTimerCount();

                if (await SetupRecordProcess())
                {
                    if (UIHelper.GetDeviceFamily() != "Windows.Mobile")
                    {
                        await capture.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), buffer);
                    }
                    else
                    { //No mp3 or wma on win mobile so we use mp4 instead, still give better compressed size than using raw format
                        await capture.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto), buffer);
                    }
                    if (isRecording)
                    {
                        ThrowInvalidOperantionException();
                        return;
                    }

                    isRecording = true;
                }
            });
        }
예제 #10
0
        private async void StartRecord()
        {
            if (BtnColVis)
            {
                LogoBack.Visibility             = Visibility.Visible;
                LogoBack.Opacity                = 1;
                LogoBackOpacitySmall.Visibility = Visibility.Visible;
                LogoBackOpacityBig.Visibility   = Visibility.Visible;
                Logo.Visibility     = Visibility.Collapsed;
                StopLogo.Visibility = Visibility.Visible;
                BtnColVis           = false;
                sb1.Begin();



                //开始录音

                //StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(Package.Current.InstalledLocation.Path + @"\AudioFile");

                //micphoneStorageFile = await folder.CreateFileAsync(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".mp3");

                StorageFolder folder2 = await KnownFolders.MusicLibrary.CreateFolderAsync(DateTime.Now.ToString("yyyy-MM-dd"), CreationCollisionOption.OpenIfExists);

                micphoneStorageFile = await folder2.CreateFileAsync(DateTime.Now.ToString("yyyy=MM=dd hh=mm=ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);

                await micphone.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), this.micphoneStorageFile);
            }
            else
            {
                LogoBack.Visibility             = Visibility.Collapsed;
                LogoBack.Opacity                = 0.4;
                LogoBackOpacitySmall.Visibility = Visibility.Collapsed;
                LogoBackOpacityBig.Visibility   = Visibility.Collapsed;
                Logo.Visibility     = Visibility.Visible;
                StopLogo.Visibility = Visibility.Collapsed;
                BtnColVis           = true;
                sb1.Stop();
                micPlay.Stop();



                //停止录音
                await micphone.StopRecordAsync();

                var stream = await micphoneStorageFile.OpenAsync(FileAccessMode.Read);

                micPlay.SetSource(stream, this.micphoneStorageFile.FileType);



                obs.Add(micphoneStorageFile.Name);
                listView.ItemsSource = obs;
                //    lists.Add(micphoneStorageFile.Name );
                //    allAudio.List = new List<Audio>();
                //    allAudio.List.Add(new Audio() { FileName = micphoneStorageFile.Name });
                //    listView.ItemsSource = allAudio.List;
            }
        }
예제 #11
0
        //</SnippetCreateFileInputNode>
        //<SnippetCreateFileOutputNode>
        private async Task CreateFileOutputNode()
        {
            FileSavePicker saveFilePicker = new FileSavePicker();

            saveFilePicker.FileTypeChoices.Add("Pulse Code Modulation", new List <string>()
            {
                ".wav"
            });
            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;
            }

            Windows.Media.MediaProperties.MediaEncodingProfile mediaEncodingProfile;
            switch (file.FileType.ToString().ToLowerInvariant())
            {
            case ".wma":
                mediaEncodingProfile = MediaEncodingProfile.CreateWma(AudioEncodingQuality.High);
                break;

            case ".mp3":
                mediaEncodingProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
                break;

            case ".wav":
                mediaEncodingProfile = MediaEncodingProfile.CreateWav(AudioEncodingQuality.High);
                break;

            default:
                throw new ArgumentException();
            }


            // Operate node at the graph format, but save file at the specified format
            CreateAudioFileOutputNodeResult result = await audioGraph.CreateFileOutputNodeAsync(file, mediaEncodingProfile);

            if (result.Status != AudioFileNodeCreationStatus.Success)
            {
                // FileOutputNode creation failed
                ShowErrorMessage(result.Status.ToString());
                return;
            }

            fileOutputNode = result.FileOutputNode;
        }
예제 #12
0
        public async void PickMedia()
        {
            var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

            openPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.VideosLibrary;
            openPicker.FileTypeFilter.Add(".wmv");
            openPicker.FileTypeFilter.Add(".mp4");

            StorageFile source = await openPicker.PickSingleFileAsync();

            var savePicker = new Windows.Storage.Pickers.FileSavePicker();

            savePicker.SuggestedStartLocation =
                Windows.Storage.Pickers.PickerLocationId.VideosLibrary;

            savePicker.DefaultFileExtension = ".mp3";
            savePicker.SuggestedFileName    = "New Video";

            savePicker.FileTypeChoices.Add("MPEG3", new string[] { ".mp3" });

            StorageFile destination = await savePicker.PickSaveFileAsync();

            MediaEncodingProfile profile =
                MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);

            MediaTranscoder transcoder = new MediaTranscoder();

            PrepareTranscodeResult prepareOp = await
                                               transcoder.PrepareFileTranscodeAsync(source, destination, profile);

            if (prepareOp.CanTranscode)
            {
                var transcodeOp = prepareOp.TranscodeAsync();

                transcodeOp.Progress +=
                    new AsyncActionProgressHandler <double>(TranscodeProgress);
                transcodeOp.Completed +=
                    new AsyncActionWithProgressCompletedHandler <double>(TranscodeComplete);
            }
            else
            {
                switch (prepareOp.FailureReason)
                {
                case TranscodeFailureReason.CodecNotFound:
                    System.Diagnostics.Debug.WriteLine("Codec not found.");
                    break;

                case TranscodeFailureReason.InvalidProfile:
                    System.Diagnostics.Debug.WriteLine("Invalid profile.");
                    break;

                default:
                    System.Diagnostics.Debug.WriteLine("Unknown failure.");
                    break;
                }
            }
        }
예제 #13
0
        //点击开始录音后调用麦克风开始录音
        private async void Start_Click(object sender, RoutedEventArgs e)
        {
            micphoneStorageFile = await KnownFolders.VideosLibrary.CreateFileAsync(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);

            MediaEncodingProfile recordProfile = null;

            recordProfile = MediaEncodingProfile.CreateM4a(AudioEncodingQuality.Auto);
            recordProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto);
            await micphone.InitializeAsync();

            await micphone.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), this.micphoneStorageFile);
        }
예제 #14
0
    public async void Record()
    {
        await init();

        await capture.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), buffer);

        if (Recording)
        {
            throw new InvalidOperationException("cannot excute two records at the same time");
        }
        Recording = true;
    }
예제 #15
0
        /*
         * Method for writing the video and audio files
         */
        private async void WriteFileAsync(YouTubeVideo video)
        {
            StorageFile mp4StorageFile = await _storageFolder.CreateFileAsync(video.FullName, CreationCollisionOption.ReplaceExisting); // Store the video as a MP4

            await FileIO.WriteBytesAsync(mp4StorageFile, video.GetBytes());

            _mp3FileName = mp4StorageFile.Name.Substring(0, mp4StorageFile.Name.Length - 14);
            StorageFile mp3StorageFile = await _storageFolder.CreateFileAsync(_mp3FileName + ".mp3", CreationCollisionOption.ReplaceExisting);

            var profile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);

            await ToAudioAsync(mp4StorageFile, mp3StorageFile, profile);
        }
예제 #16
0
        MediaEncodingProfile CreateMediaEncodingProfile(StorageFile file)
        {
            switch (file.FileType.ToString().ToLowerInvariant())
            {
            case ".wma": return(MediaEncodingProfile.CreateWma(AudioEncodingQuality.High));

            case ".mp3": return(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High));

            case ".wav": return(MediaEncodingProfile.CreateWav(AudioEncodingQuality.High));

            default: throw new ArgumentException();
            }
        }
예제 #17
0
        private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            mediaCapture = new MediaCapture();
            await mediaCapture.InitializeAsync();

            storageFolder = ApplicationData.Current.LocalFolder;
            storageFile   = await storageFolder.CreateFileAsync("test.mp3", CreationCollisionOption.GenerateUniqueName);

            lowLagMedia = await mediaCapture.PrepareLowLagRecordToStorageFileAsync(
                MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High), storageFile);

            await lowLagMedia.StartAsync();
        }
예제 #18
0
        public static Task <bool> TryTranscodeAudioAsync(IStorageFile input, IStorageFile output, bool hq, IProgress <double?> progress, CancellationToken token = default)
        {
            try
            {
                Analytics.TrackEvent("MediaTranscoding_AudioTranscodeRequested");

                var profile = MediaEncodingProfile.CreateMp3(hq ? AudioEncodingQuality.High : AudioEncodingQuality.Medium);
                return(TryTranscodeMediaAsync(input, output, profile, progress, token));
            }
            finally
            {
                Analytics.TrackEvent("MediaTranscoding_AudioTranscodeComplete");
            }
        }
예제 #19
0
        public async void ExtractAudio(string artist, string title, StorageFile videoFile, StorageFile audioFile)
        {
            if (this.transcoder == null)
            {
                this.transcoder      = new MediaTranscoder();
                this.encodingProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
            }

            var preparedTranscodeResult = await this.transcoder.PrepareFileTranscodeAsync(videoFile, audioFile, this.encodingProfile);

            await preparedTranscodeResult.TranscodeAsync();

            await TagStorageFile(artist, title, audioFile);
        }
예제 #20
0
        async void Start()
        {
            if (!IsWorking)
            {
                try
                {
                    if (mediaCapture != null)
                    {
                        try
                        {
                            mediaCapture.Failed -= MediaCapture_Failed;
                            mediaCapture.RecordLimitationExceeded -= MediaCapture_RecordLimitationExceeded;
                        }
                        catch { }
                        try
                        {
                            mediaCapture.Dispose();
                            mediaCapture = null;
                        }
                        catch { }
                    }
                    Duration     = 0;
                    mediaCapture = new MediaCapture();
                    await mediaCapture.InitializeAsync();

                    mediaCapture.Failed += MediaCapture_Failed;
                    mediaCapture.RecordLimitationExceeded += MediaCapture_RecordLimitationExceeded;
                    if (file != null)
                    {
                        try
                        {
                            await file.DeleteAsync(StorageDeleteOption.PermanentDelete);
                        }
                        catch { }
                    }
                    var name = Helper.GenerateRandomString();
                    file = await localFolder.CreateFileAsync($"{name}.m4a", CreationCollisionOption.GenerateUniqueName);

                    await mediaCapture.StartRecordToStorageFileAsync(
                        MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Low), file);

                    IsWorking             = true;
                    StopGrid.Visibility   = Visibility.Visible;
                    RecordGrid.Visibility = Visibility.Collapsed;
                    RootTimer.Start();
                }
                catch (Exception ex) { ex.PrintException("Start"); }
            }
        }
        async private void ToggleRecord2(object sender, RoutedEventArgs e)
        {
            var btn_record_audio = sender as ToggleButton;

            if (btn_record_audio.IsChecked == false)
            {
                _graph_record.Stop();
                _graph_record.Dispose();
                await PlayAudio(_target_file);

                //using the media element to play the sound
                //var raf_stream = await _target_file.OpenReadAsync();
                //media.SetSource(raf_stream, "");
                //media.Play();
            }
            else
            {
                //initialize the audio graph for recording and then start recording
                AudioGraphSettings settings = new AudioGraphSettings(AudioRenderCategory.Media);
                settings.QuantumSizeSelectionMode = QuantumSizeSelectionMode.LowestLatency;

                CreateAudioGraphResult result = await AudioGraph.CreateAsync(settings);

                if (result.Status == AudioGraphCreationStatus.Success)
                {
                    _graph_record = result.Graph;

                    //setup the input
                    var input_node = (await _graph_record.CreateDeviceInputNodeAsync(Windows.Media.Capture.MediaCategory.Other)).DeviceInputNode;

                    //setup the output (place where audio will be recorded to)
                    var feedback_folder = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFolderAsync("AudioFeedback", CreationCollisionOption.OpenIfExists);

                    _target_file = await feedback_folder.CreateFileAsync("audio message.mp3", CreationCollisionOption.GenerateUniqueName);

                    var profile          = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
                    var file_output_node = (await _graph_record.CreateFileOutputNodeAsync(_target_file, profile)).FileOutputNode;

                    //direct the input to the output
                    input_node.AddOutgoingConnection(file_output_node);
                    media.Stop();  //stop playback since we are recording
                    _graph_record.Start();
                }
                else
                {
                    await new MessageDialog("Could not initialize recorder").ShowAsync();
                }
            }
        }
예제 #22
0
        private async void StartRecord()
        {
            if (!b)
            {
                file = await folder.CreateFileAsync(DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ".mp3", CreationCollisionOption.GenerateUniqueName);

                await micphone.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), file);

                b = true;
                logo.StartFlash();
            }
            else
            {
                await new MessageDialog("已经开始了好不好?").ShowAsync();
            }
        }
        async private Task RecordAsync(ToggleButton btn_record_audio)
        {
            MediaCaptureInitializationSettings settings = new MediaCaptureInitializationSettings();

            settings.StreamingCaptureMode = StreamingCaptureMode.Audio;

            _capture = new MediaCapture();
            await _capture.InitializeAsync(settings);

            var profile         = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High);
            var feedback_folder = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFolderAsync("AudioFeedback", CreationCollisionOption.OpenIfExists);

            _target_file = await feedback_folder.CreateFileAsync("audio message.mp3", CreationCollisionOption.GenerateUniqueName);

            await _capture.StartRecordToStorageFileAsync(profile, _target_file);
        }
예제 #24
0
        /// <summary>
        /// Starts recording, data is stored in memory
        /// </summary>
        /// <param name="filePath"></param>
        public async void startRecording(string filePath)
        {
            if (this.player != null)
            {
                this.handler.InvokeCustomScript(new ScriptCallback(CallbackFunction, this.id, MediaError, MediaErrorPlayModeSet), false);
            }
            else
            {
                try
                {
                    var mediaCaputreSettings = new MediaCaptureInitializationSettings();
                    mediaCaputreSettings.StreamingCaptureMode = StreamingCaptureMode.Audio;
                    audioCaptureTask = new MediaCapture();
                    await audioCaptureTask.InitializeAsync(mediaCaputreSettings);

                    var mediaEncodingProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto);
                    var storageFile          = await KnownFolders.MusicLibrary.CreateFolderAsync("folder", CreationCollisionOption.OpenIfExists);

                    var storageFile1 = await storageFile.CreateFileAsync("1.wav", CreationCollisionOption.ReplaceExisting);

                    var timer = new Windows.UI.Xaml.DispatcherTimer();
                    timer.Tick += async delegate(object sender, object e)
                    {
                        timer.Stop();
                        await audioCaptureTask.StopRecordAsync();

                        this.handler.InvokeCustomScript(new ScriptCallback(CallbackFunction, this.id, MediaState, PlayerState_Stopped), false);

                        if (storageFile != null)
                        {
                        }
                    };
                    timer.Interval = TimeSpan.FromMilliseconds(captureAudioDuration * 1000);


                    await audioCaptureTask.StartRecordToStorageFileAsync(mediaEncodingProfile, storageFile1);

                    timer.Start();

                    this.SetState(PlayerState_Running);
                }
                catch (Exception)
                {
                    this.handler.InvokeCustomScript(new ScriptCallback(CallbackFunction, this.id, MediaError, MediaErrorStartingRecording), false);
                }
            }
        }
예제 #25
0
 private async Task RecordStartAsync(string filePath, MediaFormat format)
 {
     if (_Stream != null)
     {
         _Stream.Dispose();
     }
     _Stream = new InMemoryRandomAccessStream();
     //  TODO: Audio Formats - Note that Apple does not support MP3 recording, only playback.
     if (format == MediaFormat.WAV)
     {
         await _Capture.StartRecordToStreamAsync(MediaEncodingProfile.CreateWav(AudioEncodingQuality.High), _Stream);
     }
     else if (format == MediaFormat.MP3)
     {
         await _Capture.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High), _Stream);
     }
 }
예제 #26
0
        public async Task StartAudioCapture()
        {
            mediaCapture = new MediaCapture();
            await mediaCapture.InitializeAsync();

            //<SnippetStartAudioCapture>
            mediaCapture.RecordLimitationExceeded += MediaCapture_RecordLimitationExceeded;

            var         localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
            StorageFile file        = await localFolder.CreateFileAsync("audio.mp3", CreationCollisionOption.GenerateUniqueName);

            _mediaRecording = await mediaCapture.PrepareLowLagRecordToStorageFileAsync(
                MediaEncodingProfile.CreateMp3(AudioEncodingQuality.High), file);

            await _mediaRecording.StartAsync();

            //</SnippetStartAudioCapture>
        }
예제 #27
0
        private async void recordBtn_Click(object sender, RoutedEventArgs e)
        {
            if (record)
            {
                //already recored process
            }
            else
            {
                await RecordProcess();

                await capture.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), buffer);

                if (record)
                {
                    throw new InvalidOperationException();
                }
                record = true;
            }
        }
예제 #28
0
        public async Task StartAsync()
        {
            if (IsRecording)
            {
                return;
            }
            Stream       = new InMemoryRandomAccessStream();
            mediaCapture = new MediaCapture();
            var settings = new MediaCaptureInitializationSettings()
            {
                StreamingCaptureMode = StreamingCaptureMode.Audio,
                AudioProcessing      = Windows.Media.AudioProcessing.Raw
            };
            await mediaCapture.InitializeAsync(settings);

            await mediaCapture.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), Stream);

            IsRecording = true;
        }
예제 #29
0
        private async void CaptureAudio(object sender, RoutedEventArgs e)
        {
            //Wave.Visibility = Visibility.Visible;
            //voice.Visibility = Visibility.Collapsed;

            Stop.Visibility = Visibility.Visible;
            try
            {
                String fileName = _audioFileName;

                _recordStorageFile = await KnownFolders.MusicLibrary.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName);

                MediaEncodingProfile recordProfile = MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto);
                await _mediaCaptureManager.StartRecordToStorageFileAsync(recordProfile, this._recordStorageFile);
            }
            catch (Exception)
            {
                Debug.WriteLine("Failed to capture audio");
            }
        }
예제 #30
0
파일: AudioRecorder.cs 프로젝트: ploiu/Bob
        public async void Record()
        {
            try
            {
                if (this.IsRecording)
                {
                    throw new InvalidOperationException("Recording already in progress!");
                }

                this.MemoryBuffer = new InMemoryRandomAccessStream();

                this.DisposeMedia();
                MediaCaptureInitializationSettings settings =
                    new MediaCaptureInitializationSettings
                {
                    StreamingCaptureMode = StreamingCaptureMode.Audio
                };

                this.MediaCapture = new MediaCapture();
                await this.MediaCapture.InitializeAsync(settings);

                await this.MediaCapture.StartRecordToStreamAsync(
                    MediaEncodingProfile.CreateMp3(AudioEncodingQuality.Auto), this.MemoryBuffer);

                this.IsRecording = true;
            }
            catch (Exception)
            {
                this.IsRecording = false;
                // show a message to the user
                if (this.playbackMediaElement != null)
                {
                    TextToSpeechEngine.SpeakText(this.playbackMediaElement, "Sorry, but there was an issue with recording your voice. Try to make sure your machine has a microphone, and that microphone access is enabled for this app.");
                }
                else
                {
                    // create a new media element
                    TextToSpeechEngine.SpeakText(new MediaElement(), "Sorry, but there was an issue with recording your voice. Try to make sure your machine has a microphone, and that microphone access is enabled for this app.");
                }
            }
        }