关于Windows Phone平台音乐播放的的技术调研
希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款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平台音乐播放的的技术调研的更多相关文章
- Windows Phone后台音乐播放本地代理实现讨论
前一篇文章讨论的wp平台音乐播放的一些遇到的问题,经过苦思冥想和多方参考安卓实现:发现我们可以考虑一种本地代理的思想来完成我们的边听边存,并且流畅拖动进度条.希望大家一起讨论.可以下载我的代码一同研究 ...
- c#音乐播放器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能
[源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...
- C# 里窗体里(windows form)怎么播放音乐
在.NET的winform里面,没有托管的音乐播放器,API只能播放WAV格式,对于MP3等形式的音频文件,就要依赖于 MediaPlayer里,嘿嘿 使用的方法: 在toolbox上点右键,选择“选 ...
- 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成
原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成 [索引页][源码下载] 与众不同 win ...
- Python调用Windows API函数编写录音机和音乐播放器
功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. . 参考代码: 运行界面:
- Windows平台Unity3d播放多路RTMP或RTSP流
好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...
- 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加
好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...
- 小菜学习Winform(二)WMPLib实现音乐播放器
前言 现在网上有很多的音乐播放器,但好像都不是.net平台做的,在.net中实现音乐文件的播放功能很简单,下面就简单实现下. SoundPlayer类 在.net提供了音乐文件的类:SoundPlay ...
随机推荐
- bzoj 3517: 翻硬币
3517: 翻硬币 Time Limit: 1 Sec Memory Limit: 128 MB Description 有一个n行n列的棋盘,每个格子上都有一个硬币,且n为偶数.每个硬币要么是正面 ...
- 详解Bootstrap列表组组件
列表组可以用来制作列表清单.垂直导航等效果,也可以配合其他的组件制作出更漂亮的组件,列表组在bootstrap框架中也是一个独立的组件,所以也对应有自己独立源码: LESS:list-group.le ...
- 关于python测试webservice接口的视频分享
现在大公司非常流行用python做产品的测试框架,还有对于一些快速原型产品的开发也好,很好地支持OO编程,代码易读.Python的更新挺快的,尤其是第三方库. 对于测试人员,代码基础薄弱,用pytho ...
- activiti 介绍
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务目标 ...
- C#WebBrowser控件使用教程与技巧收集--苏飞收集
C#WebBrowser控件使用教程与技巧收集--苏飞收集 先来看看常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System. ...
- Android带多选功能的PhotoPicker
最近利用闲碎的一些时间开发了一个Android库PhotoPicker,前面一篇文章也介绍了,Android高仿微信图片选择功能的PhotoPicker,之前没有加入选择多张图片的功能,现在加上之后一 ...
- linux上nginx+apache 搭建 svn服务器
众所周知,nginx目前是不支持svn的,并且由于机房网络只开了80和22(ssh)端口,所以这时候就没法单独在服务器上搭建apache+svn .所以就产生了 nginx + apache + sv ...
- Android--Matrix图片变换处理
前言 本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放.旋转.位移.倾斜等.在最后将以一个简单的Demo来演示图片特效的变换. 本篇博客的主要内容: Matrix Matrix缩 ...
- Hibernate不调用update却自动更新
案例: TInfCustomer cus = (TInfCustomer) this.baseDao.getOne(helper); cus.setXXX cus .setXXX 不调用update也 ...
- Chapter 5. Graph Theory:: Fundamentals:: Intermediate
10457 - Magic Car 题意一开始看起来有点费解,其实最后就是要起点到终点的路径上最大边与最小边之差越小越好.这样我们可以先将边排个序,然后枚举路径上的最小边,之后依次将比它大的边按升序的 ...