希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款wp平台上面一款能流畅播放、能流畅拖拽进入条、只发一次请求就可以缓存的最好的播放器。希望大家能对我下面遇到的问题作出回答。

现在出了Windows Phone版本的音乐的主流软件有:

1、多米音乐:这个应该是目前Windows Phone平台国内最好的软件了,不管是从软件的更新进度还是技术上的实现都处于领先地位;因为它使用了AudioPlaybackAgent和AudioStreamAgent结合的技术实现;

2、酷我音乐:酷我只能排第二了,因为他的技术上实现的偷了点懒只使用了AudioPlaybackAgent;

3、豆瓣FM:豆瓣只能说终于出官方版本了,以前有很多个人开发者的版本,从豆瓣FM的设计界面来看投入也不是很大,感觉只是为了发个版本。

4、百度音乐、qq音乐、唱吧:这些都可以滚粗,简直是伤了我们用户的心,百度和qq简直是敷衍了事,哎亏我们每天给他们的千亿市值作贡献,还有就是唱吧,我真不知道说啥 这样的版本也好意思发出来,居然连AudioPlaybackAgent都没使用,意味着你手机锁屏或者按home键他就会播放停止。

还有一些个人开发者开发了些版本:

1、虾米音乐:这个应该是个人开发者里面开发的最好的了,可以和正式版本媲美;作者微博@想要放羊的兔子

2、天天动听:感觉开发者在界面的设计上还要改进,作者微博@小飞飞快飞

下面来说说技术实现,因为我也是第一次调研希望大家多多发表意见:

一般播放的做法:

就是使用AudioPlaybackAgent,这样的话做法很简单只需要将AudioTrack赋值给BackgroundAudioPlayer.Instance.Track就可以了其他的一切善后工作都交给系统了,

这样的做法一个最大的弊端:

1、就是我们在听完歌曲后,不能将歌曲缓存下来,但是不是也不是没有办法,我们可以在歌曲听完再请求一次将歌曲下载缓存在本地,避免下次再重新请求,

因为这样做的话我们的所有权全部就交给系统了,我们只能做两次请求才能将歌曲缓存下来,这就意味着我听一首歌曲的话我就必须请求两次,手机必须走两遍流量,

这样做不是不好,是因为我活在天朝,流量贵呀。再说我们都是负责人的程序员呀,我们要给我们的用户争取福利才是王道呀。

好处就是:

1、实现简单,一般不会出莫名的异常:

2、播放进度条可以随意拖动,反应也快;

然后我觉得高级点的做法就是使用AudioPlaybackAgent和AudioStreamAgent结合的技术实现;

这样实现的原理就是,如果歌曲第一次请求我们在创建AudioTrack的时候我们将source一定要设置为null因为这样它才会进入AudioStreamAgent的OnBeginStreaming,

这样我们就可以在里面使用streamer.SetSource(Mp3MediaStreamSource);这样我们在设置流的时候,将歌曲缓存下来,这样就可以实现我们的只请求一次。如果我们已经

缓存了音乐在本地的话我们只需要使用AudiaoTrack创建实例的时候将本地存储中的url赋值给source就可以在AudioPlaybackAgent播放,这样我们就不需要再去请求了。

不过这样的实现有几个弊端:

1、实现起来比较麻烦,需要用到ManageredMediaHelper

2、最大的问题是我在实现拖动进度条的时候会出现相应很慢的情况,有时候拖动一次需要一两分钟才能反应过来(多米音乐也有这个问题),特别是你往前拖拽了进度条然后再往后拖动,

简直会让你等到心都量了。

3、还有就是有实现你会发现你点击一首歌的时候,会出现不能播放的情况,你也不知道哪里出问题了,反正就是不能播放我跟踪了很久都没有发现,需要重新选择才能播放。

希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款wp平台上面一款能流畅播放、能流畅拖拽、只请求一便流量的wp最好的播放器。希望大家能对我上面遇到的问题作出回答。

关于Windows Phone平台音乐播放的的技术调研的更多相关文章

  1. Windows Phone后台音乐播放本地代理实现讨论

    前一篇文章讨论的wp平台音乐播放的一些遇到的问题,经过苦思冥想和多方参考安卓实现:发现我们可以考虑一种本地代理的思想来完成我们的边听边存,并且流畅拖动进度条.希望大家一起讨论.可以下载我的代码一同研究 ...

  2. c#音乐播放器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能

    [源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...

  4. C# 里窗体里(windows form)怎么播放音乐

    在.NET的winform里面,没有托管的音乐播放器,API只能播放WAV格式,对于MP3等形式的音频文件,就要依赖于 MediaPlayer里,嘿嘿 使用的方法: 在toolbox上点右键,选择“选 ...

  5. 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成

    原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成 [索引页][源码下载] 与众不同 win ...

  6. Python调用Windows API函数编写录音机和音乐播放器

    功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. . 参考代码: ​ 运行界面: ​

  7. Windows平台Unity3d播放多路RTMP或RTSP流

    好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...

  8. 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加

    好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...

  9. 小菜学习Winform(二)WMPLib实现音乐播放器

    前言 现在网上有很多的音乐播放器,但好像都不是.net平台做的,在.net中实现音乐文件的播放功能很简单,下面就简单实现下. SoundPlayer类 在.net提供了音乐文件的类:SoundPlay ...

随机推荐

  1. jQuery自动分页打印表格(HTMLtable),可以强制换页

    最近做项目的时候需要做批量打印订单,一个订单可能在最后一页是的内容是不足一页的,这时候下一个订单需要下一页打印,这样就需要强制换页.在下一页再打印下一个订单 部分代码: 部分重要的css是分页的换页的 ...

  2. js解析格式化json日期

    代码: function jsonDateFormat(jsonDate) {//json日期格式转换为正常格式    try {        var date = new Date(parseIn ...

  3. S2SH框架的集成

    S2SH框架的集成 20131130 代码下载 : 链接: http://pan.baidu.com/s/1sz6cQ 密码: 513t 这一个星期的时间里,学习SSH框架技术,首先因为之前的项目用到 ...

  4. listview可见再加载图片

    对于,listView如果同时含有大量文字和图片,那么对于用户,如果不需要滑动到后面,那么此时去加载网络图片,显然是耗费流量的. 此时可以做一些优化: listView.getRefreshableV ...

  5. LoadRunner 如何将英文的字符串转换成UTF-8格式的字符串?

    7.48  如何手动转换字符串编码 1.问题提出 如何将英文的字符串转换成UTF-8格式的字符串? 2.问题解答 可以使用lr_convert_string_encoding函数将字符串从一种编码手动 ...

  6. OpenCV相机标定和姿态更新

    原帖地址: http://blog.csdn.net/aptx704610875/article/details/48914043 http://blog.csdn.net/aptx704610875 ...

  7. Hermes实时检索分析平台

    一.序言 随着TDW的发展,公司在大数据离线分析方面已经具备了行业领先的能力.但是,很多应用场景往往要求在数秒内完成对几亿.几十亿甚至几百上千亿的数据分析,从而达到不影响用户体验的目的.如何能够及时有 ...

  8. Understanding mysql max_connect_errors

    来自:http://mysqlblog.fivefarmers.com/2013/08/08/understanding-max_connect_errors/ Perhaps like many u ...

  9. [SQL SERVER 2005]数据库差异备份及还原

    因为之前遇到还原差异备份,最开始遇到SQLServer报错:”无法还原日志备份或差异备份,因为没有文件可用于前滚“.查阅很多资料后,终于得到解决.收集整理成这篇随笔. 问题原因:出现这种错误绝大多数是 ...

  10. 支持取消操作和暂停操作的Backgroundworker

    这也是今天讨论的话题.取消是默认就支持的,而暂停则默认不支持.但通过ManualResetEvent可以对其进行干预. using System; using System.Collections.G ...