2012-02-28 103 views
4

有很多關於如何使用背景音頻代理的例子,但很少展示如何使用背景音頻流媒體代理以及我發現的不顯示流媒體mp3,而是創建一個假裝流。如何在後臺通過HTTP流式傳輸MP3?

當我創建一個新的Windows Phone音頻流傳輸代理項目,它給了我:

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

我怎麼給它一個MP3 URL像http://relay.radioreference.com:80/346246215,並在後臺流呢?我也可以放BackgroundAudioPlayer.Instance.Play();來玩,就是這樣嗎?

回答

6

是的,這就足夠了如果您將URL設置爲後臺代理並調用函數BackgroundAudioPlayer.Instance.Play();則不需要流化器。後臺代理自動流媒體

+0

如何設置網址?哪裏? – 2012-02-29 07:56:13

+1

請參閱此鏈接http://msdn.microsoft.com/en-us/library/hh202978%28v=vs.92%29.aspx。在後臺音頻代理項目中,將AudioPlayer.cs文件中的音頻播放列表添加爲新的軌道。 (新Uri(「http://relay.radioreference.com:80/346246215」,UriKind.RelativeorAbsolute), 「AlbumName」, 「Artist」, 「Ninja Tuna」, Artpath); – Santhu 2012-02-29 08:30:52

+0

謝謝。我會看看這是否會奏效。 – 2012-02-29 20:01:35

3

你有一個Github上的AudioStreamingAgent的好例子:https://github.com/loarabia/ManagedMediaHelpers

我已經試過了,但只在流上找到ID3頭時才起作用。

+0

謝謝。我已經嘗試過這個例子,它們使它不僅難以理解,而且對我也不適用。如果它幫助別人,我仍會投票。 – 2012-02-29 20:01:24

5

如果要播放format/codec which is not natively supported by the phone中的流式音頻,您必須使用AudioStreamingAgent。如果它是支持的編解碼器,則可以使用AudioPlayerAgent(請參閱示例here)。

使用AudioStreamingAgent是一項不重要的任務,需要深入瞭解您需要播放的編解碼器,以便將其轉換爲手機可以理解的內容。我知道如果一個人做了這個,爲了H.264流,而且花了很長時間和很多時間來拉動它的工作。在沒有人問及之前:不,他們無法共享該項目的代碼。

如果你真的必須這條路往下走,ManagedMediaHelpers(以前here)是一個很好的起點,但肯定的,它們並不包括所有的編解碼器,這是潛在的,非常複雜,而不是好東西記錄在網上。

0

你可以試試我的解決方案,只需從後臺代理自定義設置新的軌道從mainPage。

SetTrack from foreground

您還可以保存曲目,以Isostorage和讀取從後臺代理玩。