2 votes

UWP MediaPlaybackList fait apparaître un son entre les éléments de la liste

J'utilise une MediaPlaybackList pour diffuser essentiellement des données audio arrivant par Bluetooth sous la forme d'un byte[] à un intervalle de temps fixe. D'après la documentation MS, MediaPlaybackList permet une lecture "sans interruption" entre les échantillons audio. Mais dans mon cas, j'ai un bruit sec et un décalage lors de la transition vers l'échantillon audio suivant.

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(); ;
}

Comment puis-je obtenir une diffusion audio en continu véritablement "sans interruption" en utilisant une méthode similaire à celle-ci ?

J'ai également essayé d'écrire mon flux dans un fichier en temps réel au fur et à mesure de l'arrivée des données, juste pour voir si le bruit sec ou l'espace est présent. La lecture du fichier auquel les octets ont été ajoutés est parfaite, sans bruit ni décalage.

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

0voto

Xavier Xie - MSFT Points 4921

Le MediaPlayer, et en particulier la MediaPlayerList, n'est pas conçu pour être utilisé avec un flux audio "en direct". Vous devez finir d'écrire les données dans le flux d'octets avant de les ajouter à la liste et de lancer le MediaPlayer. L'utilisation du MediaPlayer n'est pas la bonne solution pour ce scénario particulier.

Une meilleure solution serait d'utiliser l'option Audio Graph . Le graphique audio vous permet d'ajouter des sources d'entrée à partir de points d'extrémité audio réels, de sorte que vous n'avez pas besoin de remplir le tampon d'octets avec le flux audio. Vous pouvez ensuite utiliser des nœuds de sous-mixage pour mélanger les flux de points d'extrémité audio sans clics ni pops.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X