tidal-HiFi воспроизведение с ALSA останавливается после каждой песни

Я использую приливные hifi для потоковой передачи музыки под linux (Mint 17, 64bit) с Chrome. Для достижения идеального воспроизведения бит я выключаю pulseaudio ($killall pulseaudio), чтобы чисто использовать alsa для обработки звука и вывода на мой USB ЦАП.
Однако, воспроизведение останавливается после каждой песни и мне нужно вручную выбрать следующую песню для воспроизведения. Удивительно, но эта проблема не возникает, если я использую pulseaudio.

Я был бы благодарен за любые подсказки, как исправить это поведение.

29
задан tammo
13.02.2023 5:27 Количество просмотров материала 2538
Распечатать страницу

1 ответ

Я понимаю, что это старый вопрос, но я недавно столкнулся с такой же проблемой и нашел решение.

проблема, по-видимому, связана с предварительной загрузкой треков в Tidal. Поскольку вы не используете pulseaudio, Google Chrome создает новый аудиоконтроллер каждый раз, когда дорожка начинает воспроизводиться из списка воспроизведения. Плеер приливные ожидает той же звуковой контроллер должен быть на месте, когда следующая песня начинает играть, что приводит к зависанию.

как я исправил проблему было отлаживая код javascript-плеера Tidal, вводя мои изменения через прокси-сервер "man in the middle" (посмотрите mitmproxy, отличное программное обеспечение). Тем самым я мог изменить поведение игрока. Изменив следующую функцию:

function m(t) {
    t || w.pause(), g(), e.trigger("track:switched", A), I = void 0, S && x === A ? (o.player !== o.preloadPlayer && (o.player.stop(), o.setMediaPlayer(o.preloadPlayer)), u(T, S, t), x = void 0, T = void 0, S = void 0) : f(A, p, k)
}

to

function m(t) {
    t || w.pause(), g(), e.trigger("track:switched", A), I = void 0, S && x === A, f(A, p, k)
}

Я избавился от этой проблемы. Последняя функция всегда будет вызывать функцию 'f', тем самым создавая новый проигрыватель, избегая проблемы с предварительной загрузкой.

шаги, которые вам нужно пройти is:

  1. установить mitmproxy и сертификаты
  2. настройка браузера для использования mitmproxy (вы можете найти настройки в меню - >Настройки - >Дополнительно - >Изменить настройки прокси
  3. выполнить mitmproxy такой: mitmproxy -п 8888 --tidal.py скрипт

Tidal.py ' s содержание ниже. Обратите внимание, что вам придется скачать .js файл и внести изменения, и поместить его в место, где он может быть загружен, например. в том же каталоге, что и tidal.py файл. Удачи вам!

import cStringIO
from libmproxy.protocol.http import decoded

def response(context, flow):
    if flow.match("~u http://listen.tidal.com/v1.6.4-p-5/app.js") and flow.response.headers.("content-type", "").startswith("application/x-javascript"):
        with decoded(flow.response):
            try:
                injected_script = cStringIO.StringIO(open('./app.js', 'rb').read())
                flow.response.content = injected_script.getvalue()
            except Exception as e:
                print e
                pass
2
отвечен Are Jensen 2023-02-14 13:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх