【问题标题】:Streaming mp3 file from external server从外部服务器流式传输 mp3 文件
【发布时间】:2014-06-04 08:32:52
【问题描述】:

我正在开发一个 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();

但是没有任何声音被播放。我为媒体元素的事件添加了断点,但没有一个被触发。

我已经仔细检查了,mp3 文件的 URI 是正确的。

我做错了什么?

【问题讨论】:

    标签: c# windows-phone-8 windows-phone audio-streaming


    【解决方案1】:

    在引发媒体打开事件后,您可以播放 mp3。我认为你的方法(你在其中调用 play 是在引发媒体打开事件之前调用的。

    您可以在 mediaOpened 事件和您的方法(播放)中实现一些 hack。喜欢

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

    【讨论】:

    • 由于某种原因,MediaOpened 事件永远不会触发。
    • 您的模拟器/设备是否可以访问互联网?你能检查你的模拟器是否可以浏览页面吗
    • 是的。我已经在具有 wifi 和 3G 的设备上以及在模拟器上尝试过,结果相同。我也试过你的最后一次编辑,mediaopened 仍然没有触发。
    • 啊,我确定您的媒体没有添加到 xaml 树中!您需要在一些网格、画布堆栈面板等中添加媒体元素锡 xaml 树以工作希望这会有所帮助
    【解决方案2】:

    试试这个:

            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

    【讨论】:

    • 这行得通,但是在播放声音后我得到一个例外,说 mp3 受 DRM 保护。有解决方法吗? (mp3是录音,所以不应该有DRM)
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2013-01-22
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多