Сколько, реально, lossless треков в Яндекс Музыке

Привет!

Я очень люблю хороший звук.Не могу назвать себя прям аудиофилом, ибо провода никогда не прогревал, и усилок на пирамидки не ставил.Но всё равно люблю хороший звук:

  • Слушаю дома lossless музыку на напольных колонках и через хороший усилок (соседи иногда приходят)
  • Слушаю дома старый добрый винил через этот же усилок и колонки (знали бы, как звучит Юрий Антонов на виниле)
  • Ношу android телефон с USB ЦАП-ом как второй, чтобы слушать через него то, что скачал, как в старые добрые времена (неудобно жесть)

И когда вчера Яндекс, довольно тихо, выкатил lossless музыку, я прям заинтересовался.

Конечно же, я сразу обновил приложения, поставил лучшее качество музыки, и послушал - оно прям зазвучало!Не, правда. Я пробовал Tidal через наушники, и Яндекс.Музыка проигрывала ему тогда по качеству звука.Сейчас же я прям стал слышать СИЛЬНО больше деталей, а это даже через iPhone по bluetooth, с его кодеком AAC, который задушен на битрейт 320 килобит (а в реальности мои наушники могут только 256).С Android телефоном разница так вообще улетела в космос, между тем что было, и тем, что стало - спасибо кодеку LDAC от Sony, который тащит 990 килобит и позиционируется как кодек без сжатия, но в реальности "почти без сжатия, но со сжатием".

Короче, стало сильно лучше, я обрадовался, что можно не носить теперь с собой здоровенный ЦАП и не хранить на флешке 100+ Gb всяких дискографий, а слушать прямо из стриминга и по воздуху - это же реально удобно, ибо рекомендации у Яндекса просто лучшие, и разнообразие решает.

Но вот один вопрос не давал мне покоя - какое реальное качество у треков, и сколько их каких.

В своем анонсе ребята писали, что добавили "flac, и другие высококачественные форматы"" - вот эти "и другие" мне и захотелось посчитать.

Само приложение Я.Музыки не пишет ни битрейт, ни частоту дискретизации, ни кодек, ни даже просто "качество".

Штош, раз не пишет, мы попробуем узнать сами...

Сначала нужно выставить в приложении Я.Музыки максимальное качество, и скачать весь плейлист с лайками - у меня это чуть больше 1.5к треков.Будем считать, что мои треки, это репрезентативная выборка, отражающая генеральную совокупность.

Далее, чтобы узнать качество, мы должны вспомнить, что каждое приложение хранит локально какие-то свои данные.И если на телефоне есть права суперпользователя, эти данные можно посмотреть.

Благо, на моей кастомной прошивке android телефона права суперпользователя уже были встроены в ядро, и оставалось поставить только менеджер для управления этими правами.

Сказано - сделано, накатил KernelSU, проверил в Termux что всё работает.

Дальше, нам нужно поковыряться в данных, которые хранит Я.Музыка, и найти там какую-то базу, в которой есть табличка с треками, которые я скачал, и информацией о них.

Можно ковыряться руками, но это не очень удобно - давайте возьмем приложение MyAndroidTools. Хоть оно и не обновлялось 5 лет, но прекрасно работает и сейчас.Для чего оно изначально создавалось, это отдельная история, но нас интересует та его часть, которая позволяет просматривать базы данных приложений, ей и воспользуемся.

Открываем MyAndroidTools, находим Яндекс Музыку (ту, которая именно android приложение, а не сайт, отображаемый через webview), проваливаемся в неё, смотрим базы.

Сколько, реально, lossless треков в Яндекс Музыке

Хихикаем с базы chunk_norris, идём дальше)))

Скажу честно, я просто потыкал все подряд, и нашел нужное - информация о моих треках живет в базе UserDb_999999999, в табличке tracks_cache (ID пользователя я заменил, у вас будет свой).

Сколько, реально, lossless треков в Яндекс Музыке

Далее, нам нужно утащить эту базу на десктоп, чтобы её там покрутить.Заходим в Termux прямо на телефоне, логинимся суперпользователем через sudo su, и копируем базу из папки приложения Я.Музыки в пользовательское пространство, например, на внутренний накопитель:cp /data/data/ru.yandex.music/databases/userDb_999999999 /storage/XXY9-A77B/(ID накопителя тоже рандомный, свой посмотрите сами).

Потом, значит, копируем этот файл на компьютер. Можно просто по проводу, но я сделал через adb по wifi:adb pull /storage/XXY9-A77B/userDb_999999999 /Users/windoozatnick/Desktop/

Теперь пора открыть эту базу, и начать писать к ней SQL запросы.

Ставим DBeaver, если у вас еще нет, создаем новое подключение, выбираем SQLite, выбираем нужный файл - всё готово, вы прекрасны.Видим базу, видим таблички, пробуем выполнить SELECT * FROM tracks_cache - оно работает.

Сколько, реально, lossless треков в Яндекс Музыке

Штош, пора писать запросы.

Нас интересуют следующие столбцы:

  • realQuality - столбец, в котором Яндекс пишет то, как они для себя определяют качество, я так понимаю
  • codec - собственно, кодек, в котором закодирован трек
  • bitrate - битрейт трека

Но, со столбцом bitrate есть прикол - для flac треков там указан нулевой bitrate. Почему так сделано, я не знаю, но давайте это исправим, и решим так - если битрейт 0, то мы будем считать, что он равен 1000 (средний битрейт для flac файлов).

Проверяем первым запросом, что 0 битрейт только у flac файлов - да, это так.

Сколько, реально, lossless треков в Яндекс Музыке

Далее, делаем первый взгляд сверху, и смотрим, сколько треков в каждом из realQuality

Сколько, реально, lossless треков в Яндекс Музыке

Если перевести realQuality в проценты, то будет так:Lossless - 62%High - 35%Normal - 3%

Окей, мы поняли разбивку по ярлычкам Яндекса, теперь давайте посмотрим, что по кодекам

Сколько, реально, lossless треков в Яндекс Музыке

По кодекам оно так:aac - 71%flac - 27%mp3 - 2%

Ну и теперь самое интересное - давайте посмотрим по битрейтам

Сколько, реально, lossless треков в Яндекс Музыке

По битрейтам расклад такой:256 - 68%1000 - 27%320 - 2%128 - 1.6%192 - 1.4%

Видим, что больше половины треков в битрейте 256 - будто бы, звучит не очень.Давайте проверим комбинации кодек + битрейт, и после я расскажу, зачем

Сколько, реально, lossless треков в Яндекс Музыке

Видим следующее:aac + 256 - 68%flac + 1000 - 27%mp3 + 320 - 2%aac + 128 - 1.6%aac + 192 - 1.4%

Видим, что большинство треков выложены в связке AAC + 256, и это хорошо, давайте расскажу, почему.

AAC позиционируется как "психоакустический кодек", то есть, как любой кодек с потерями, он откидывает часть музыкального потока, но откидывает именно то, что либо не улавливается человеческим ухом, либо улавливается слабо.Говоря коротко, AAC выкинет то, что и так было сложно услышать.

В некоторых сравнениях кодеков утверждается, что AAC на битрейте 256 звучит не хуже, чем например flac через aptxHD на битрейте 512 (как ловко я сравнил кодек файла с bluetooth кодеком, а!).

Но тут пусть придут "настоящие аудиофилы", и напишут, почему все кодеки плохие, и почему нужно слушать по прогретому проводу через ламповый усилок.

Дальше давайте посмотрим еще комбинацию realQuality c bitrate

Сколько, реально, lossless треков в Яндекс Музыке

И комбинацию всех трех столбцов

Сколько, реально, lossless треков в Яндекс Музыке

Переводить в проценты мне лень, извинити))Если хотить переводить сами, то 100% это 1631

Вывод

Яндекс - большие молодцы.Чисто на слух - это стало звучать СИЛЬНО лучше, особенно через LDAC.Цифры говорят нам, что битрейты не самые максимальные, но кодек выбран удачно, и звучит всё хорошо.Официально заявляю, что уберу в тумбочку USB ЦАП, и буду слушать Яндекс Музыку в качестве.Также в своем тг-канале я пишу про новости в мире ИИ и технологий, кому интересно переходите

66
22
22
11
11
14 комментариев

Комментарий удалён модератором

Ещё и Юрием Антоновым прикрылся. По-любому говно какое-нибудь невыносимое слушает

Вот же, пишут

1

Жаль, что диапазон идеального человеческого слуха 20-20к

2

losslessldac

Пчел, элдак это конечно хорошо, но ты не услышишь разницу между лосслес и лосси через блютуз

1

А есть по этому поводу экспертное мнение? А то все говорят, да говорят)