[大媽吐糟] 蝦米音樂的系列猜測

88720847.jpg (600×368)

背景

習慣泛聽的專輯順序強迫症重症患者!html

  • 喜歡複合類型的音樂,追蹤創做型音樂人/團隊
  • 只聽專輯,並且必定要按順序來聽
  • 習慣根據當前心態快速造成有針對性的播放列表

音樂歷史:git

  • 從有條件配置錄音機開始
  • 上百盒帶,幾百CD,MP3CD
  • 硬盤常備 30G+ APC
  • 以往移動音樂習慣:

    • iOS 用 podcast 下載有關頻道的音樂
    • Android 用自行上傳的音樂,以 類別/音樂人/專輯 爲目錄形式組織
    • 用內置播放器以目錄爲線索播放
    • 管理/播放 流程繼續電腦中 cmus 的習慣
  • 爲製做 大小丸子:"情人節快樂;-)" 才知道 xiami

    • 變成移動音樂主力陪伴平臺
    • 下載過 900+ 專輯
    • 播放 20000+ 首音樂

現象

實際上定心使用 xiami 音樂應用,也通過了很長時間的折騰:github

  • 從 Play 市場上安裝了全部高分音樂播放器, 沒有一個超過 winamp 的尿性
  • 從 碗豆茄 下載安裝了全部高分音樂應用, 發現都一個尿性:

    • 在播放界面中沒有當前播放列表的快速入口
    • 播放清單界面沒有專輯封面縮圖
    • 沒法從當前播放快速進入 專輯/藝人/相關藝人 頁面,並進行快速下載
    • 只有亂序播放,沒有順序播放的快捷方式
    • ...
  • 相比下來,只有 xiami 還能忍受
  • 可是,當本地音樂 下載3000+音樂, 藝人超過5屏,專輯超過100時
  • 各類杯具開始了:

    • 下載/播放/刪除 同時進行時,閃退
    • 任何界面中,批量刪除時,閃退, 恢復時老是刪不乾淨
    • 常常專輯/藝人封面丟失, 一片空白沒法要求強行同步/從新下載
    • 批量操做,常常定住,無反應
    • 每次啓動,進入本地音樂界面時,有必定比例閃退
    • 每次啓動進入本地音樂時, 每次都要消耗幾十秒從新加載
    • ...

問題

基本上,俺對手機上的音樂品質已經不報但願了,
只要求:網絡

  • 能夠快速選中想聽的藝人
  • 能快速追加其它下載的指定藝人全部專輯到當前播放清單中
  • 快速按照下載的專輯以及專輯內順序依次播放

可是,以上三個基本需求,無一能在當前已知全部移動播放器中做到:多線程

  • 選擇藝人, 只有 Google Play音樂 基本做到舒心了:

    • 150205-gplayer-lib.png(PNG 圖像,370x489 像素)
    • 點擊進入 個人樂庫 優先進入 音樂人, 而不是 其它 tab
    • 全部卡片用的是現有專輯的拼貼
    • 杯具的是, 從本地導入音樂的過程,以及目錄 是沒法控制的
    • 若是經過其它應用刪除了相關音樂, GPlayer 是不知道什麼時候能更新的
  • 快速根據須要組合出當前播放清單, 沒有應用能知足:

    • 多數強行要求建立 播放列表/精華 沒有7次以上的操做不可能完成
    • xiami 還限定只能有 50 首音樂的上限制
    • 這就很杯具了: 俺播放本地的音樂,爲毛要限制俺的 playlist 長度?!
  • 按照一張專輯接一張專輯,音樂依從專輯原有順序播放

    • 這應該是最吻合音樂人當初創意的音樂收聽順序了
    • 可是,這居然成爲全部 音樂類應用 最不肯意實現的功能?!
    • 爲何呢?! 細思恐極....

分析

MP3 meta信息

參考:ui

從 mpeg-1 時代開始, 音樂文件中就已經能包含完備的專輯/藝人/播放順序 的信息!spa

可是!

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 卡拼命下載了幾千音樂到本地了code

就讓俺們愉快的自由播放 ,很差嘛?!orm

進展

相關文章
相關標籤/搜索