2019独角兽企业重金招聘Python工程师标准>>>

  • 原发: [大妈吐糟] 虾米音乐的系列猜想 - SegmentFault

吐糟,忍受不能的吐糟...

背景

习惯泛听的专辑顺序强迫症重症患者!

  • 喜欢复合类型的音乐,追踪创作型音乐人/团队
  • 只听专辑,而且一定要按顺序来听
  • 习惯根据当前心态快速形成有针对性的播放列表

音乐历史:

  • 从有条件配置录音机开始
  • 上百盒带,几百CD,MP3CD
  • 硬盘常备 30G+ APC
  • 以往移动音乐习惯:
    • iOS 用 podcast 下载有关频道的音乐
    • Android 用自行上传的音乐,以 类别/音乐人/专辑 为目录形式组织
    • 用内置播放器以目录为线索播放
    • 管理/播放 流程继续电脑中 cmus 的习惯
  • 为制作 大小丸子?:"情人节快乐;-)" 才知道 xiami
    • 变成移动音乐主力陪伴平台
    • 下载过 900+ 专辑
    • 播放 20000+ 首音乐

现象

实际上定心使用 xiami 音乐应用,也经过了很长时间的折腾:

  • 从 Play 市场上安装了所有高分音乐播放器, 没有一个超过 winamp 的尿性
  • 从 碗豆茄 下载安装了所有高分音乐应用, 发现都一个尿性:
    • 在播放界面中没有当前播放列表的快速入口
    • 播放清单界面没有专辑封面缩图
    • 无法从当前播放快速进入 专辑/艺人/相关艺人 页面,并进行快速下载
    • 只有乱序播放,没有顺序播放的快捷方式
    • ...
  • 相比下来,只有 xiami 还能忍受
  • 但是,当本地音乐 下载3000+音乐, 艺人超过5屏,专辑超过100时
  • 各种杯具开始了:
    • 下载/播放/删除 同时进行时,闪退
    • 任何界面中,批量删除时,闪退, 恢复时总是删不干净
    • 经常专辑/艺人封面丢失, 一片空白无法要求强行同步/重新下载
    • 批量操作,经常定住,无反应
    • 每次启动,进入本地音乐界面时,有一定比例闪退
    • 每次启动进入本地音乐时, 每次都要消耗几十秒重新加载
    • ...

问题

基本上,俺对手机上的音乐品质已经不报希望了,
只要求:

  • 可以快速选中想听的艺人
  • 能快速追加其它下载的指定艺人所有专辑到当前播放清单中
  • 快速按照下载的专辑以及专辑内顺序依次播放

但是,以上三个基本需求,无一能在当前已知所有移动播放器中作到:

  • 选择艺人, 只有 Google Play音乐 基本作到舒心了:

    • 150205-gplayer-lib.png(PNG 图像,370x489 像素)

    • 点击进入 我的乐库 优先进入 音乐人, 而不是 其它 tab
    • 所有卡片用的是现有专辑的拼贴
    • 杯具的是, 从本地导入音乐的过程,以及目录 是无法控制的
    • 如果通过其它应用删除了相关音乐, GPlayer 是不知道何时能更新的
  • 快速根据需要组合出当前播放清单, 没有应用能满足:
    • 多数强行要求创建 播放列表/精华 没有7次以上的操作不可能完成
    • xiami 还限定只能有 50 首音乐的上限制
    • 这就很杯具了: 俺播放本地的音乐,为毛要限制俺的 playlist 长度?!
  • 按照一张专辑接一张专辑,音乐依从专辑原有顺序播放
    • 这应该是最吻合音乐人当初创意的音乐收听顺序了
    • 但是,这竟然成为所有 音乐类应用 最不愿意实现的功能?!
    • 为什么呢?! 细思恐极....

分析

MP3 meta信息

参考:

  • RFC 3003 - The audio/mpeg Media Type
  • RFC 3119 - A More Loss-Tolerant RTP Payload Format for MP3 Audio
  • ID3 - Wikipedia, the free encyclopedia
  • MP3 - Wikipedia, the free encyclopedia
  • ...

从 mpeg-1 时代开始, 音乐文件中就已经能包含完备的专辑/艺人/播放顺序 的信息!

但是!

xiami 也好,其它音乐应用也好, 走的都是 ucg 模式,以便避开版权纠纷;

  • 这就导致各家音乐库中的音乐文件本身 meta 信息混乱/不全
  • 进一步的,为了避免在移动设备上进行大量的目录操作, 大家都将下载文件放在一个目录中
  • 更加可悲的, 为了快速开发使用 SQLite 来管理所有音乐 meta 信息
  • 综上, 导致了:
    • 无法合理的触发 下载/meta提取/刷新/使用 时机
    • 人为形成多重等待
    • 并在错误的信息基础上,几乎无法进行合理的控制识别
  • 最终形成类似情景:
    • 150205-xiami-local-chaos.jpg(JPEG 图像,720x1280 像素) - 缩放 (59%)

    • 根据音乐人信息, 从专辑列表,下载多个专辑后
    • 在音乐人界面, 看到的就是这种专辑顺序混杂的情景
    • 实际播放时,可以想象是多么难受的事儿
  • xiami 中还有一个诡异的现象是:
    • 即使相关专辑都下载到了本地
    • 但是,在一个专辑播放过程中
    • 动态的从其它本地专辑界面,点击加入当前播放列表后
    • 当播放追加专辑音乐时, xiami 不从本地播放,而是无视音乐已经下载的状态,尝试从网络中下载播放!
    • 这得是什么样的脑洞经理,才作的出这种产品决策呢...

建议

  • 基于用户上传的音乐文件表直接使用:

    • 根据官方的信息, 在服务端统一刷一下 meta 信息吧
    • 并将相关 meta 信息,独立保存一下
    • 在其它用户下载音乐文件的同时, 直接向客户端 push 对应的meta 信息, 就别生从本地文件中再遍历读取了吧
  • 下载/管理/播放, 用多线程/进程来处理吧
    • 最简单的,别将 meta 信息和其它控制信息放在同一 DB 中哪
  • SQLite 这货就是单用户单线程最轻量级DB
    • 对于这种专辑信息,又不涉及交叉关系索引
    • 就是用个内存 KV 效率也比用 SQL 高哪

总之, 亲, 大家喜欢 xiami 的音乐库, 努磨 SD 卡拼命下载了几千音乐到本地了

就让俺们愉快的自由播放 ,不好嘛?!

进展

  • 150205 整理以往的吐糟, 结集纪念发布,永备,看 xiami 何时修订上
  • 141121 [大妈吐糟] 自杀现象分析 - 虾米音乐讨论区
  • 141030 [大妈吐糟] 无法理解的本地播放行为! - 虾米音乐讨论区

转载于:https://my.oschina.net/zoomquiet/blog/1499105

[大妈吐糟] 虾米音乐的系列猜想相关推荐

  1. 虾米音乐腾讯视频争好声音版权 阿里数娱音乐布局浮水

    进入2014年以来,阿里数娱一直没闲着,刘春宁到处串场为阿里在文化产业的布局摇旗呐喊.过去半年,阿里数娱已经先后完成了在游戏.动漫.影视等领域的布局,这两日在音乐领域的布局也正式浮出水面. 相隔一天时 ...

  2. 大家好,给大家介绍一下,我们的主题歌 @虾米音乐

    大家好,给大家介绍一下 先知创新大会 11中旬 在北京 我们有ZHI而来 我们汇聚了量子密码, 人工智能安全,神经网络,语义检测, DolphinAttack,指纹溯源, 威胁情报,自适应, 等最有技 ...

  3. 解决Chrome浏览器打开虾米音乐网页播放器时的排版问题

    2019独角兽企业重金招聘Python工程师标准>>> 几年了,虾米音乐网页播放器听音乐都有个纠结的地方,就是用Chrome浏览器打开时,排版会出错,表现为播放器右边一部分显示不出来 ...

  4. python爬取虾米音乐_Python爬取620首虾米歌曲,揭秘五月天为什么狂吸粉?!

    最近两天,我被朋友圈的五月天粉丝(五迷)疯狂刷屏,"五月天永远陪你到20岁""演唱会即视感",这些字眼让我恨不得马上奔到电影院打卡. 作为五迷,我是满怀激情地在 ...

  5. 下载: 虾米音乐_您所说的内容:如何组织凌乱的音乐收藏

    下载: 虾米音乐 Earlier this week we asked you to share your tips, tricks, and tools, for managing a messy ...

  6. 迁徙图_虾米音乐上的原住民会迁徙去哪呢?

    一石激起千层浪.最近,认证为「前华纳音乐/环球音乐中国区市场总监」的相征(今年因<乐队的夏天>走红)发微博称:江湖传闻,虾米音乐明年1月份关闭,一个时代要结束了吗? 时代是没那么容易结束的 ...

  7. 服务状态已停止_虾米音乐今日宣布关停,新平台”音螺“相关商标已注册

    1 月 5 日上午,虾米音乐发布官方声明表示,由于业务调整,虾米音乐播放器业务将于 2021 年 2 月 5 日正式停止服务. 根据官方声明,虾米音乐将在2021年2月5日0点,停止所有歌曲试听.下载 ...

  8. 小米澄清「手机不再支持GMS」;虾米音乐正式关停;《质量效应1》DLC 因源代码损坏而移除 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...

  9. 拼多多开除即将拿到股票的安全大佬;虾米音乐将永久关停;GitHub 解禁伊朗开发者使用权

    整理 | 丁恩华 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点! 虾米音乐播放器 2 月 5 日关停,3 月 5 日后将无法登录 抖音发布 20 ...

最新文章

  1. [转]十分钟搞定Vue搭建
  2. windows7 设置 Local Settings权限为可以访问
  3. python无效数据怎么办_Python使用sqlite插入数据无效的原因
  4. istringstream字符串流,实现类似字符串截取的功能,字符串流中的put,str()将流转换成为字符串string
  5. linux nginx 安装stream,Centos7-64bit-编译安装配置Nginx stream四层负载均衡 动态加载
  6. CS0656 缺少编译器要求的成员“Microsoft.CSharp..........
  7. java压缩源代码_【免费毕设】JAVA文件压缩与解压缩实践(源代码+论文)
  8. 实用 VSCODE 8类插件安利,提高开发效率
  9. 2021牛客暑期多校训练营6,签到题CFHI
  10. python类和对象_Python类和对象
  11. 1.关于433MHz按键单片机解码
  12. 数说CS|北京大学前沿交叉学科研究院大数据研究中心保研生源大起底!
  13. F1, 中位数,四分位距IQR等指标的统计检验
  14. java中string是什么意思_java中string什么意思
  15. [MATLAB] ks检验 混合von mises分布
  16. ORA-29491: invalid table for chunking 错误记录
  17. Cortex-M0核芯片bootloader调试过程
  18. pcie转m2装系统win10_m.2固态硬盘怎么装win10教程|m.2固态硬盘装win10教程步骤
  19. 配置 Visual Studio 2019以进行 iOS 开发
  20. 小米mix2安兔兔html5跑分,2019安兔兔性能跑分排行榜 小米9华丽登顶,荣耀v20排第9...

热门文章

  1. java什么是reference_理解java reference
  2. java produces_java-在所有产生JSON的端点上使用@Produces(“...
  3. matlab smooth 函数,matlab中smooth函数平滑处理数据实例
  4. Docker 快速安装 Mongodb
  5. php1500,圆周率1500多位
  6. 组播vlan_【参与方式】耗时10小时编撰(下)带你轻松通关组播知识点!
  7. SCPPO(二十九):测算过程中问题的解决总结(续)
  8. Waymo无人卡车高调重返凤凰城,重点路测高速和主干道,但货运先机已失
  9. AI招聘公司Moka再融1.8亿,90后学霸创始团队靠变革HR年入3000万
  10. 想让照片里的美女“回头”?清华MIT谷歌用AI帮你实现了