在UWP中将HTML5音频流保存为mp3文件

时间:2018-04-30 12:22:24

标签: c# uwp media-player html5-audio

我目前在Windows 10商店中有一个无线电流媒体应用。现在我想让我的用户可以将当前流记录到mp3文件中。

您是否有人建议如何保存音频流?我找不到给我保存字节的属性或事件。

我正在使用Windows.Media.Playback.Mediaplayer类。

提前致谢

基督教

1 个答案:

答案 0 :(得分:2)

通常,您无法直接从Mediaplayer获取音频流。但是,您可以通过Stereo Mix设备监听音频。

enter image description here

将Stereo Mix设置为默认录制设备。并通过MediaCapture类进行音频捕获。

private async Task<bool> RecordProcess()
{
    if (buffer != null)
    {
        buffer.Dispose();
    }
    buffer = new InMemoryRandomAccessStream();
    if (capture != null)
    {
        capture.Dispose();
    }
    try
    {
        MediaCaptureInitializationSettings settings = new MediaCaptureInitializationSettings
        {
            StreamingCaptureMode = StreamingCaptureMode.Audio
        };
        capture = new MediaCapture();
        await capture.InitializeAsync(settings);
        capture.RecordLimitationExceeded += (MediaCapture sender) =>
        {
            //Stop
            //   await capture.StopRecordAsync();
            record = false;
            throw new Exception("Record Limitation Exceeded ");
        };
        capture.Failed += (MediaCapture sender, MediaCaptureFailedEventArgs errorEventArgs) =>
        {
            record = false;
            throw new Exception(string.Format("Code: {0}. {1}", errorEventArgs.Code, errorEventArgs.Message));
        };
    }
    catch (Exception ex)
    {
        if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UnauthorizedAccessException))
        {
            throw ex.InnerException;
        }
        throw;
    }
    return true;
}

请注意,Stereo只能监控从同一硬件设备输出的音频。所以你需要设置可用的播放设备。对于代码示例,您可以参考this