Я понимаю, что это старый вопрос, но я недавно столкнулся с такой же проблемой и нашел решение.
проблема, по-видимому, связана с предварительной загрузкой треков в 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:
- установить mitmproxy и сертификаты
- настройка браузера для использования mitmproxy (вы можете найти настройки в меню - >Настройки - >Дополнительно - >Изменить настройки прокси
- выполнить 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