UWP MediaPlaybackList выдает звук между элементами списка - PullRequest
0 голосов
/ 06 февраля 2019

Я использую MediaPlaybackList для «потоковой» передачи аудиоданных, поступающих через Bluetooth, в виде байта [] с фиксированным интервалом времени.Согласно документации MS, MediaPlaybackList - это воспроизведение без пропусков между аудиосэмплами.Но в моем случае при переходе к следующему аудиосэмплу у меня появляется треск и пропасть.

byte[] audioContent = new byte[audioLength];
chatReader.ReadBytes(audioContent);

MediaPlaybackItem mediaPlaybackItem = new MediaPlaybackItem(MediaSource.CreateFromStream(new MemoryStream(audioContent).AsRandomAccessStream(), "audio/mpeg"));
playbackList.Items.Add(mediaPlaybackItem);

if (_mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackState != MediaPlaybackState.Playing)
{               
    _mediaPlayerElement.MediaPlayer.Play(); ;
}

Как я могу добиться по-настоящему «пропускающего» потокового аудио, используя метод, подобный этому?

Кроме того, я попытался записать свой поток в файл в реальном времени, так как данные поступают просточтобы увидеть, есть ли треск или разрыв.Он воспроизводится из файла, к которому байты добавляются без каких-либо ошибок или пробелов.

using (var stream = await playbackFile.OpenStreamForWriteAsync())
{
    stream.Seek(0, SeekOrigin.End);
    await stream.WriteAsync(audioContent, 0, audioContent.Length);
}

1 Ответ

0 голосов
/ 13 февраля 2019

MediaPlayer и, в частности, MediaPlayerList не предназначены для использования с «живым» аудиопотоком.Вы должны закончить запись данных в поток байтов, прежде чем добавлять их в список и запускать MediaPlayer.Использование MediaPlayer не является правильным решением для этого конкретного сценария.

Лучшим решением было бы использование Audio Graph .Аудиографический график позволяет вам добавлять источники входного сигнала от реальных конечных точек аудио, поэтому вам не нужно заполнять буфер байтов потоковым аудио.Затем вы можете использовать узлы субмикширования для микширования потоков аудио конечной точки без щелчков и щелчков.

...