在 UWP 中播放流中的音频

Posted

技术标签:

【中文标题】在 UWP 中播放流中的音频【英文标题】:Play audio from a stream in UWP 【发布时间】:2017-09-07 12:06:20 【问题描述】:

我问的问题基本上与here 相同,但是,这个问题是 8 年前问的,答案不再适用于 UWP。

我有一个带有http://someurl.com/stream 的音频流,它以audio/ogg 格式传输。我希望能够从 UWP 应用程序中播放。

我看到NAudio 库推荐了很多(毕竟,在上面的示例中使用了它),但是它非常大并且文档相当乏味,并且最新示例很少(他们曾经有一个流例如,但从我能够从 Codeplex 下载的内容中,它被替换为常规的本地文件播放器示例)。我没有足够的经验来理解他们所拥有的小文档和示例代码。

老实说,我什至不知道从哪里开始。我从来没有处理过这样的流(或任何流)。也许 NAudio 库不是要走的路?

代码将不胜感激,但即使是指向我可以阅读播放此类流的来源的指针也会非常有帮助,因为我的 google-fu 让我失望了。

谢谢。


编辑:

private void PlayMedia() 
    System.Uri manifestUri = new Uri("http://amssamples.streaming.mediaservices.windows.net/49b57c87-f5f3-48b3-ba22-c55cfdffa9cb/Sintel.ism/manifest(format=m3u8-aapl)");
    var mediaPlayer = new Windows.Media.Playback.MediaPlayer();
                                                 ~~~~~~~~~~~~ -> "'Media Player' does not contain a constructor that takes 0 arguments."
    mediaPlayer.Source = MediaSource.CreateFromUri(manifestUri);
    mediaPlayer.Play();

【问题讨论】:

你试过[这个](docs.microsoft.com/en-us/windows/uwp/audio-video-camera/…)? 是的,但我无法让 MediaPlayer 类工作。例如,它说 x.Play() 不存在。我认为这是因为我没有正确扩展课程,但它没有为我识别其他课程。我不确定它有什么问题。 【参考方案1】:

但我无法让 MediaPlayer 类工作。例如,它说 x.Play() 不存在。

您尚未发布您的代码段。所以我无法准确定位到 Visual Studio 提示“不存在”的问题。如果您想使用“MediaPlayer”类,请先添加Windows.Media.CoreWindows.Media.Playback 命名空间。您可以参考以下实现基本媒体播放器的代码。

using Windows.Media.Core;
using Windows.Media.Playback;

......

private void PlayMedia()
 
     System.Uri manifestUri = new Uri("http://amssamples.streaming.mediaservices.windows.net/49b57c87-f5f3-48b3-ba22-c55cfdffa9cb/Sintel.ism/manifest(format=m3u8-aapl)");
     var mediaPlayer = new MediaPlayer();       
     mediaPlayer.Source = MediaSource.CreateFromUri(manifestUri);
     mediaPlayer.Play();
 

Media Player does not contain a constructor that takes 0 arguments 的错误信息是指MediaPlayer 类中没有没有参数的构造函数。请尝试使用带命名空间的构造函数的全名。

var mediaPlayer = new Windows.Media.Playback.MediaPlayer();       

【讨论】:

对不起,我不记得确切的错误(因为我正在摆弄它,其中有几个,大部分是我自己做的)。无论如何,使用您编写的代码会给我一个错误。我已经用代码和错误消息更新了我的问题。 所以,不幸的是,这并没有起到任何作用。我尝试制作一个空白项目,它在那里工作得很好。我尝试制作新的 Minimal Template10 项目(我最初使用的)但它没有再次工作。 T10可能有问题?无论如何,我在 VS2017 中尝试了 T10,它似乎可以正常工作,所以我想现在可以了。我确实想知道为什么会发生这种情况。

以上是关于在 UWP 中播放流中的音频的主要内容,如果未能解决你的问题,请参考以下文章

Windows UWP 应用程序中的 MediaElement 不播放音频

如何在三星智能电视上提取嵌入在 Icecast 音频(广播)流中的流式“正在播放”数据

如何从实时流中播放音频

在 UWP 中使用 NAudio 播放多个音频文件

iOS - 如何从流中读取音频并播放音频

在 UWP 应用中切换音频