How to Capture "Audio Only" using Windows MediaCapture API?

2

I am trying to capture "Audio only" through Windows MediaCapture API. I am using the following code but getting an Exception(HRESULT: 0xC00D36D5).

    MediaCapture captureMgr = new MediaCapture();   
    MediaCaptureInitializationSettings captureSettings = new MediaCaptureInitializationSettings();
    captureSettings.StreamingCaptureMode = StreamingCaptureMode.Audio;
    await captureMgr.InitializeAsync(captureSettings);
    this.CaptureVideoElement.Source = captureMgr;// exception is thrown here...
    await captureMgr.StartPreviewAsync();

please tell me what i am doing wrong? or please suggest a better wayout.

c#
windows
audio-streaming
audio-recording
asked on Stack Overflow Sep 10, 2012 by Muhammad

1 Answer

3

I am trying to do something similar and this is what I found looking through MSDN/Samples...

private async void OnStartRecordingBtnClick(object sender, RoutedEventArgs e)
{
    try
    {
        m_mediaCaptureMgr = new MediaCapture();
        var settings = new MediaCaptureInitializationSettings();
        settings.StreamingCaptureMode = StreamingCaptureMode.Audio;
        await m_mediaCaptureMgr.InitializeAsync(settings);

    }
    catch (Exception exception)
    {
        // Do Exception Handling
    }
}

private async void OnStopRecordingBtnClick(object sender, RoutedEventArgs e)
{
    try
    {
        String fileName;
        if (!m_bRecording)
        {
            fileName = "audio.mp4";
            m_recordStorageFile = await Windows.Storage.KnownFolders.VideosLibrary.CreateFileAsync(fileName, Windows.Storage.CreationCollisionOption.GenerateUniqueName);
            MediaEncodingProfile recordProfile = null;
            recordProfile = MediaEncodingProfile.CreateM4a(Windows.Media.MediaProperties.AudioEncodingQuality.Auto);
            await m_mediaCaptureMgr.StartRecordToStorageFileAsync(recordProfile, this.m_recordStorageFile);
            m_bRecording = true;
        }
        else
        {
            await m_mediaCaptureMgr.StopRecordAsync();
            m_bRecording = false;
            if (!m_bSuspended)
            {
                var stream = await m_recordStorageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
                playbackElement.AutoPlay = true;
                playbackElement.SetSource(stream, this.m_recordStorageFile.FileType);
            }
        }
    }
    catch (Exception exception)
    {
        // Do Exception Handling...
        m_bRecording = false;
    }
}

Hope this helps. Here is the MSDN link: enter link description here

answered on Stack Overflow Jan 9, 2013 by Ram Mummidi • edited Jan 9, 2013 by Ram Mummidi

User contributions licensed under CC BY-SA 3.0