В UWP сохранение аудиопотока HTML5 в файл mp3 - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время у меня есть приложение для потокового вещания в Магазине Windows 10. Теперь я хочу дать своим пользователям возможность записать текущий поток в mp3-файл.

Есть ли у кого-нибудь из вас предложения о том, как сохранить аудиопоток? Я не могу найти свойство или событие, которое дает мне байты для их сохранения.

Я использую класс Windows.Media.Playback.Mediaplayer.

Заранее спасибо

Christian

1 Ответ

0 голосов
/ 01 мая 2018

Как правило, вы не можете напрямую получить аудиопоток от 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 может контролировать только звук, который выводится с того же устройства. Так что вам нужно установить доступное устройство воспроизведения. Для примера кода вы можете обратиться это .

...