如何在后台通过HTTP传输MP3?

时间:2012-02-28 21:55:43

标签: c# windows-phone-7

有许多关于如何使用背景音频代理的示例,但很少有人展示如何使用背景音频流代理,而我发现的那些代理不显示流式mp3,而是创建一个假装流。

当我创建一个新的Windows Phone Audio Streaming Agent项目时,它会给我:

public class AudioTrackStreamer : AudioStreamingAgent
{
    /// <summary>
    /// Called when a new track requires audio decoding
    /// (typically because it is about to start playing)
    /// </summary>
    /// <param name="track">
    /// The track that needs audio streaming
    /// </param>
    /// <param name="streamer">
    /// The AudioStreamer object to which a MediaStreamSource should be
    /// attached to commence playback
    /// </param>
    /// <remarks>
    /// To invoke this method for a track set the Source parameter of the AudioTrack to null
    /// before setting  into the Track property of the BackgroundAudioPlayer instance
    /// property set to true;
    /// otherwise it is assumed that the system will perform all streaming
    /// and decoding
    /// </remarks>
    protected override void OnBeginStreaming(AudioTrack track, AudioStreamer streamer)
    {
        //TODO: Set the SetSource property of streamer to a MSS source

        NotifyComplete();
    }

    /// <summary>
    /// Called when the agent request is getting cancelled
    /// The call to base.OnCancel() is necessary to release the background streaming resources
    /// </summary>
    protected override void OnCancel()
    {
        base.OnCancel();
    }
}

如何为其提供像http://relay.radioreference.com:80/346246215这样的MP3网址并让它在后台播放?我也把BackgroundAudioPlayer.Instance.Play();用来播放它就是这样吗?

4 个答案:

答案 0 :(得分:6)

是的,这就足够了如果你将URL设置为后台代理并调用函数BackgroundAudioPlayer.Instance.Play();那就不需要流光。后台代理自动流媒体

答案 1 :(得分:5)

如果您想在format/codec which is not natively supported by the phone中播放流媒体音频,则必须使用AudioStreamingAgent。如果它是受支持的编解码器,则可以使用AudioPlayerAgent(请参阅示例here)。

使用AudioStreamingAgent是一项非常重要的任务,需要深入了解您需要播放的编解码器,以便将其转换为手机理解的内容。我知道如果一个人做了这个,对于一个H.264流,并花了很长时间和很多头发拉动它的工作。在任何人问之前:不,他们无法共享该项目的代码。

如果你真的必须沿着这条路走下去,那么ManagedMediaHelpers(之前的here)是一个很好的起点,但是,它们并不涵盖所有编解码器,这可能是<强大>非常复杂,并没有在网络上有详细记录。

答案 2 :(得分:3)

你在Github上有一个很好的AudioStreamingAgent示例:https://github.com/loarabia/ManagedMediaHelpers

我已经尝试过了,但只有在流上找到ID3标题时才有效。

答案 3 :(得分:0)

您可以尝试我的解决方案,只需从后台代理进行一些自定义即可从mainPage设置新曲目。

SetTrack from foreground

您还可以将trackList保存到Isostorage,并从后台代理中读取要播放的内容。