我正在开发Windows Phone 8应用程序。我需要在我的应用程序中从远程服务器流式传输.mp3声音文件。
我尝试使用MediaElement
:
private MediaElement media;
// Constructor of class
media = new MediaElement();
media.Source = new Uri(string.Format("{0}b10en_US.mp3", mp3HostName), UriKind.Absolute);
media.MediaFailed += media_MediaFailed;
media.MediaEnded += media_MediaEnded;
media.MediaOpened += media_MediaOpened;
media.Loaded += media_Loaded;
media.BufferingProgressChanged += media_BufferingProgressChanged;
// In a method I call the following
media.play();
然而,没有任何声音播放。我在mediaelement的事件中添加了断点,但没有一个被解雇。
我已仔细检查过,mp3文件的URI是正确的。
我做错了什么?
答案 0 :(得分:1)
试试这个:
string url = "http://traffic.libsyn.com/slashfilmcast/Davidmichod.mp3";//your url link
// Constructor
public MainPage()
{
InitializeComponent();
Microsoft.Xna.Framework.FrameworkDispatcher.Update();
Song track = Song.FromUri("Sample Song", new Uri(url));
MediaPlayer.Play(track);
}
using Microsoft.Xna.Framework.Media;
//获取MediaPlayer
答案 1 :(得分:1)
您可以在引发媒体开启事件后播放mp3。我认为你的方法(你在调用play的方法是在引发媒体打开事件之前调用的。
你可以在mediaOpened事件和你的方法(播放)中实现一些黑客攻击。像
private bool isMediaLoaded = false;
private bool isPlayCalled = false;
private void PlayMP3()
{
if(isMediaLoaded)
media.Play();
else
isPlayCalled = true;
}
void MediaElement1_MediaOpened(object sender, RoutedEventArgs e)
{
isMediaLoaded = true;
if(isPlayCalled)
MediaElement1.Play();
}