मुझे एहसास है कि यह एक पुराना सवाल है, लेकिन मैं हाल ही में उसी समस्या में भाग गया और एक समाधान पाया।
यह समस्या टाइडल में पटरियों के पूर्व-लोडिंग से उपजी प्रतीत होती है। चूँकि आप pulseaudio का उपयोग नहीं कर रहे हैं इसलिए Google Chrome हर बार एक नया ऑडियो कंट्रोलर बनाता है जब कोई ट्रैक आपकी प्लेलिस्ट से खेलना शुरू करता है। टाइडल के खिलाड़ी को उम्मीद है कि अगले गाने के बजने पर वही ऑडियो कंट्रोलर होगा, जिससे हैंग-अप हो सकेगा।
जिस तरह से मैंने समस्या को ठीक किया वह था टाइडल के जावास्क्रिप्ट प्लेयर कोड को डीबग करना 'बीच के छद्म में एक आदमी' के माध्यम से मेरे बदलावों को देखना (माइटोप्रॉक्सी, महान सॉफ्टवेयर)। ऐसा करके मैं खिलाड़ी के व्यवहार को बदल सकता था। निम्नलिखित फ़ंक्शन को बदलकर:
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)
}
सेवा मेरे
function m(t) {
t || w.pause(), g(), e.trigger("track:switched", A), I = void 0, S && x === A, f(A, p, k)
}
मुझे इस मुद्दे से छुटकारा मिल गया। अंतिम फ़ंक्शन हमेशा `f 'फ़ंक्शन को कॉल करेगा, जिससे प्री-लोड के मुद्दे से बचने के लिए एक नया खिलाड़ी बनाया जाएगा।
आपको जिन चरणों से गुजरना है, वे हैं:
- मितप्रोक्सी स्थापित करें तथा इसके प्रमाण पत्र
- मित्प्रॉक्सी का उपयोग करने के लिए अपने ब्राउज़र को सेट करें (आप मेनू- & gt; सेटिंग के तहत सेटिंग पा सकते हैं; सेटिंग्स- & gt; उन्नत- & gt; परिवर्तन प्रॉक्सी सेटिंग्स;
- Mitmproxy को इस तरह चलाएं: mitmproxy -p 8888 --script tidal.py
Tidal.py की सामग्री नीचे है। ध्यान दें कि आपको .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
pcm.!default { type hw card CARDNAME } ctl.!default { type hw card CARDNAME }
और फिर "--disable-audio-output-resampler" झंडे के साथ Google क्रोम शुरू करना, मुझे बिना किसी रोक के hifi ज्वारीय का बिट-परफेक्ट प्लेबैक मिलता है। यह पल्सेडियो के साथ अक्षम है (पूरी तरह से सिस्टम से हटा दिया गया है) और एक बाहरी यूएसबी डैक का उपयोग करके, डेबियन को चला रहा है। CARDNAME को कमांड लाइन से aplay -l चलाकर पाया जा सकता है।