希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款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. 学习IT资源分享,欢迎各位知道的学习IT资源前来分享

    1:排序不是按照名次,随机排序 慕课学习网https://www.imooc.com/ 腾讯课堂 https://ke.qq.com/ 柠檬学院 http://bjlemon.edusoho.cn/ ...

  2. 进度的Block在子线程调用

    [_pictureView sd_setImageWithURL:[NSURL URLWithString:item.image2] placeholderImage:nil options:SDWe ...

  3. 奇怪吸引子---YuWang

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  4. ELK——安装 logstash 2.2.0、elasticsearch 2.2.0 和 Kibana 3.0

    本文内容 Elasticsearch logstash Kibana 参考资料 本文介绍安装 logstash 2.2.0 和 elasticsearch 2.2.0,操作系统环境版本是 CentOS ...

  5. java 反射: 当Timestamp类型的属性值为null时,设置默认值

    import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...

  6. Navi.Soft30.产品.代码生成器.操作手册

    1系统简介 1.1功能简述 在Net软件开发过程中,大部分时间都是在编写代码,并且都是重复和冗杂的代码.比如:要实现在数据库中10个表的增删改查功能,大部分代码都是相同的,只需修改10%的代码量.此时 ...

  7. 转:ecshop商品分类页获取相册列表方法

    ecshop商品分类页获取相册列表方法 很久之前就看到过你好在商品列表页有获取到相册列表,但是一直没有实践过,感觉应该挺简单的吧,但是最近手上的项目刚好就需要这个功能,然后就想到网上查下资料,至少找个 ...

  8. arcgis flexviewer中由Application向widget传值

    arcgis flexviewer所有的小部件类均继承自com.esri.viewer.BaseWidget基类,而BaseWidget又继承了com.esri.viewer.IBaseWidget接 ...

  9. 小数量宽带用户的福音,Panabit 云计费easyradius 接口隆重发布,PA宽带计费系统

    PA接口在早前就发布了,但是一直迟迟没有发布官方说明文档,由于最近问的客户较多,特写了这篇文档 由于PA使用标准radius认证协议,所以用户需要在本地搭建一个计费,由于大部分用户的数量只有几百个,不 ...

  10. EntityFramework Code First 添加唯一键

    在EntityFramework 6.1后可以直接使用 [Index("TitleIndex", IsUnique = true)] public string Title { g ...