MediaPlayer 通用 Windows 应用程序
Posted
技术标签:
【中文标题】MediaPlayer 通用 Windows 应用程序【英文标题】:MediaPlayer Universal Windows App 【发布时间】:2016-05-18 20:23:10 【问题描述】:我开始使用 xamarin 开发应用程序,我的解决方案中的一个项目是 UWP。
当有人单击按钮时,我需要在那里播放声音,我正在使用 MediaPlayer 来实现我的目标,并且在 Windows 10(桌面)上它工作正常,但在我的 Windows Mobile 10 (Lumia 930) 上它开始延迟很长(大约 1 秒)。
下面我提供播放音频源的代码:
MediaPlayer _player = BackgroundMediaPlayer.Current;
_player.SetUriSource(new Uri(String.Format("ms-appx:///Assets/Sound/5s.wav", UriKind.Absolute)));
_player.Play();
我的问题是:
在 UWP 中除了 MediaPlayer 之外,还有其他播放音频的方法吗?
【问题讨论】:
您是否尝试过预加载音乐?你应该看看这里:blogs.windows.com/buildingapps/2016/01/13/… 【参考方案1】:如果您没有特定的理由使用背景音频,您可以只使用媒体元素在前台播放音频:
<!-- create element in XAML or in code -->
<MediaElement Name="mediaElement" ... />
// Code - set source or reference to stream
MediaElement mediaElement = new MediaElement();
mediaElement.Source = new Uri("msappx:///Media/sound.mp3");
我还建议查看supported codecs 的列表。
在更复杂的场景中,您可能需要查看Audio Graph API。
【讨论】:
感谢您的回答,但在我的应用程序音乐是敏感点,我只需播放 5 秒,但我需要在后台立即播放。在这种情况下,音频图也没有帮助我。我会继续寻找解决问题的方法。【参考方案2】:我不确定这是否是不好的做法,但如果我预加载媒体,我可以立即播放。
类似这个例子的伪代码(c# 风格):
class Foo
private MediaPlayer _player;
Foo() //constructor
_player = BackgroundMediaPlayer.Current;
_player.AutoPlay = false;
_player.SetUriSource(new Uri(String.Format("ms-appx:///Assets/Sound/5s.wav", UriKind.Absolute)));
void ButtonClicked(Object sender, EventArgs event)
_player.Play();
【讨论】:
以上是关于MediaPlayer 通用 Windows 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Qt 视频流应用程序:未找到 qt.mediaplayer 的服务
WINDOWS上OpenCV需要有MediaPlayer才能正确运行?
从 WNS 调用的 BackgroundActivated 任务单进程模型的 WIndows Universal MediaPlayer