问题
I currently have a radio streaming App in the Windows 10 Store. Now I want to give my users the possibility to record the current stream to a mp3 File.
Does anyone of you have a suggestion on how to save the Audio Stream? I can't find the property or event that gives me the bytes to save them.
I'm using the Windows.Media.Playback.Mediaplayer class.
Thanks in advance
Christian
回答1:
In general you could not get Audio Stream from Mediaplayer
directly. However, you could monitor the audio via Stereo Mix
device.
Set Stereo Mix as default record device. And make a audio capture via MediaCapture
class.
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;
}
Note that Stereo
could only monitor audio that output from the same hardware device. So you need to set available playback device. For code sample you could refer this.
来源:https://stackoverflow.com/questions/50100450/in-uwp-saving-html5-audio-stream-to-mp3-file