【问题标题】:MediaPlayer Universal Windows AppMediaPlayer 通用 Windows 应用程序
【发布时间】: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 之外,还有其他播放音频的方法吗?

【问题讨论】:

标签: c# audio uwp windows-10-universal lumia


【解决方案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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多