हर गाने के बाद अल्सा के साथ ज्वार-भाटा प्लेबैक


1

मै इस्तेमाल कर रहा हूँ ज्वार भाटा क्रोम के साथ लिनक्स (मिंट 17, 64 बिट) के तहत संगीत स्ट्रीमिंग के लिए। बिट परफेक्ट प्लेबैक को प्राप्त करने के लिए मैं अपने USB DAC को ऑडियो प्रोसेसिंग और आउटपुट के लिए शुद्ध रूप से alsa का उपयोग करने के लिए pulseaudio ($ किलिंग pulseaudio) को बंद करता हूं। हालाँकि, प्लेबैक हर गाने के बाद रुक जाता है और मुझे प्ले करने के लिए अगले गाने को मैन्युअल रूप से चुनना होगा। हैरानी की बात यह है कि अगर मैं pulseaudio का उपयोग करता हूं तो यह समस्या नहीं होती है।

मैं किसी भी संकेत के लिए आभारी हूँ कि इस व्यवहार को कैसे ठीक किया जाए।

जवाबों:


2

मुझे एहसास है कि यह एक पुराना सवाल है, लेकिन मैं हाल ही में उसी समस्या में भाग गया और एक समाधान पाया।

यह समस्या टाइडल में पटरियों के पूर्व-लोडिंग से उपजी प्रतीत होती है। चूँकि आप 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 'फ़ंक्शन को कॉल करेगा, जिससे प्री-लोड के मुद्दे से बचने के लिए एक नया खिलाड़ी बनाया जाएगा।

आपको जिन चरणों से गुजरना है, वे हैं:

  1. मितप्रोक्सी स्थापित करें तथा इसके प्रमाण पत्र
  2. मित्प्रॉक्सी का उपयोग करने के लिए अपने ब्राउज़र को सेट करें (आप मेनू- & gt; सेटिंग के तहत सेटिंग पा सकते हैं; सेटिंग्स- & gt; उन्नत- & gt; परिवर्तन प्रॉक्सी सेटिंग्स;
  3. 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

एक अद्यतन: उपरोक्त समाधान संभवतः पुराना है। मैंने पाया है कि इन सेटिंग्स के साथ ~ / .asoundrc: pcm.!default { type hw card CARDNAME } ctl.!default { type hw card CARDNAME } और फिर "--disable-audio-output-resampler" झंडे के साथ Google क्रोम शुरू करना, मुझे बिना किसी रोक के hifi ज्वारीय का बिट-परफेक्ट प्लेबैक मिलता है। यह पल्सेडियो के साथ अक्षम है (पूरी तरह से सिस्टम से हटा दिया गया है) और एक बाहरी यूएसबी डैक का उपयोग करके, डेबियन को चला रहा है। CARDNAME को कमांड लाइन से aplay -l चलाकर पाया जा सकता है।
Are Jensen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.