有许多关于如何使用背景音频代理的示例,但很少有人展示如何使用背景音频流代理,而我发现的那些代理不显示流式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();
用来播放它就是这样吗?
答案 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设置新曲目。
您还可以将trackList保存到Isostorage,并从后台代理中读取要播放的内容。