C# Windows Phone 7:mp3流媒体延迟

C# Windows Phone 7:mp3流媒体延迟,c#,streaming,mp3,windows-phone,C#,Streaming,Mp3,Windows Phone,我在windows phone 7(诺基亚lumia 800)上遇到音频流问题: 该应用程序是WindowsPhone7.1,我在诺基亚Lumia800(WP7.8)和Lumia820(WP8.0)上试用过 我将URL()放入我的播放列表: AudioTrack track = new AudioTrack(this.streamURI, "FOO", "BAR", "", null); BackgroundAudioPlayer.Instance.Track = track; 我订阅Back

我在windows phone 7(诺基亚lumia 800)上遇到音频流问题:

该应用程序是WindowsPhone7.1,我在诺基亚Lumia800(WP7.8)和Lumia820(WP8.0)上试用过

我将URL()放入我的播放列表:

AudioTrack track = new AudioTrack(this.streamURI, "FOO", "BAR", "", null);
BackgroundAudioPlayer.Instance.Track = track;
我订阅BackgroundAudioPlayer.Instance.PlayStateChanged,使用不同的事件处理程序更改UI(在“播放”和“停止”之间来回更改按钮,并更新“正在播放”-文本字段)

当我按play时,UI会通过eventhandler更新以显示“缓冲”图标,然后在BackgroundAudioPlayer.Instance.PlayerState更改为PlayState.playing时再次将其更改为“播放”

在诺基亚lumia 820用户界面上,声音正常工作,在lumia 800 BackgroundAudioPlayer.Instance.PlayStateChanged上(更改为“播放”),耳机中有微弱的滴答声,但在音乐开始播放之前有5-6秒的延迟

延迟当然是令人讨厌的(声音在820上几乎立即播放),但如果我能检测到它并相应地更新UI,这是可以接受的,目前仅使用

BackgroundAudioPlayer.Instance.PlayStateChanged.

关于我可以订阅的其他活动的任何想法,或者调整声音开始播放的速度的方法(可能是调整缓冲?到目前为止没有运气…)

首先,排除与服务器的连接问题。两台设备是否在同一个WiFi连接上?如果是这样,请尝试以下流URL,我从中设置了一个大的初始缓冲区刷新:

http://143.226.75.100/waug_mp3_128k

一些设备和软件试图开始解码,但很快意识到它们没有足够的数据。一些解码器比其他解码器需要更多的数据。有没有办法在播放前增加缓冲区大小?如果没有,您可能需要自己管理此缓冲区并选择更大的缓冲区。

首先,排除与服务器的连接问题。两台设备是否在同一个WiFi连接上?如果是这样,请尝试以下流URL,我从中设置了一个大的初始缓冲区刷新:

http://143.226.75.100/waug_mp3_128k

一些设备和软件试图开始解码,但很快意识到它们没有足够的数据。一些解码器比其他解码器需要更多的数据。有没有办法在播放前增加缓冲区大小?如果没有,您可能需要自己管理这个缓冲区,并选择一个更大的缓冲区。

我已经制定了一个解决方案:当我

BackgroundAudioPlayer.Instance.PlayStateChanged -> PlayState.Playing
我检查BackgroundAudioPlayer.Instance.Position.millizes,如果它为0,则流不会真正播放,因此我只需每隔100毫秒重新检查一次,然后仅在BackgroundAudioPlayer.Instance.Position.millizes>0时将UI从“缓冲”更改为“播放”


它解决了问题,但比您希望的要混乱一些,哦,好吧:)

我已经做了一个变通方法:当我

BackgroundAudioPlayer.Instance.PlayStateChanged -> PlayState.Playing
我检查BackgroundAudioPlayer.Instance.Position.millizes,如果它为0,则流不会真正播放,因此我只需每隔100毫秒重新检查一次,然后仅在BackgroundAudioPlayer.Instance.Position.millizes>0时将UI从“缓冲”更改为“播放”


它解决了这个问题,但比你想要的要混乱一点,哦,好吧:)

好吧,它从服务器获取要播放的曲目(它生成一个HTTP GET,服务器返回要播放的实际曲目,因此如果曲目发生变化,我们不必发布新的应用程序),因此互联网/WiFi连接不应该成为问题。如果网络出现问题,我们会弹出一个警告消息框。我可能需要告诉应用程序使用较短的缓冲区作为解决方法。。。。。也有同样的问题:扬声器/耳机和BackgroundAudioPlayer.Instance.PlayState中有一个“滴答声”,更改为播放,但实际音乐播放前还有几秒钟……@FelixHJ,奇怪。最初的滴答声听起来像是你后来听到的音乐吗?有没有可能它是以前在设备上播放的任何东西留下的音频缓冲区?嗯,不是真的,它只是一个通用的“声卡初始化”/“放大器启动”滴答声,只是噪音。但是,它与“BackgroundAudioPlayer.Instance.PlayStateChanged->playing”出现的时间完全相同。它从服务器获取要播放的曲目(它生成一个HTTP GET,服务器返回要播放的实际曲目,因此如果曲目发生变化,我们不必发布新的应用程序),因此internet/WiFi连接不应成为问题。如果网络出现问题,我们会弹出一个警告消息框。我可能需要告诉应用程序使用较短的缓冲区作为解决方法。。。。。也有同样的问题:扬声器/耳机和BackgroundAudioPlayer.Instance.PlayState中有一个“滴答声”,更改为播放,但实际音乐播放前还有几秒钟……@FelixHJ,奇怪。最初的滴答声听起来像是你后来听到的音乐吗?有没有可能它是以前在设备上播放的任何东西留下的音频缓冲区?嗯,不是真的,它只是一个通用的“声卡初始化”/“放大器启动”滴答声,只是噪音。然而,它与“BackgroundAudioPlayer.Instance.PlayStateChanged->playing”同时出现。