A2DP के साथ ब्लूटूथ पर ऑडियो चलाने पर 0.5s विलंबता से छुटकारा पाएं


49

जैसा कि शीर्षक में वर्णित है, मैं A2DP के साथ ब्लूटूथ पर ऑडियो चलाते समय एक आधे सेकंड की देरी का अनुभव करता हूं।
इससे फिल्में देखना संभव नहीं है क्योंकि ध्वनि वीडियो के साथ सिंक्रनाइज़ नहीं है।

मुझे यकीन नहीं है कि ब्लूटूथ मानक, A2PD प्रोटोकॉल, Ubuntu 12.04 पर A2DP कार्यान्वयन, या बेल्किन Z73 ब्लूटूथ रिसीवर के कारण देरी हो रही है।

वैसे भी, क्या यह एक सामान्य अंतराल है? क्या कोई ध्यान देने योग्य विलंबता के बिना ब्लूटूथ पर ऑडियो चलाने का एक तरीका है?


9
आपकी समस्या का वास्तविक समाधान नहीं बल्कि एक समाधान: यदि यह केवल फिल्मों को चलाने के बारे में है, तो आप ऑडियो / वीडियो ऑफ़सेट को समायोजित कर सकते हैं, जिससे वीडियो में भी देरी होगी। का उपयोग करते हुए mplayer, आप कुंजी +और -कुंजी दबाकर ऐसा करते हैं । VLC में, मुझे नहीं पता कि देरी को कैसे सेट किया जाए, लेकिन अगर VLC के पास ऐसा कोई विकल्प नहीं है, तो मुझे आश्चर्य होगा।
लेमन

मैंने उसके बारे में सोचा लेकिन मुझे YouTube के लिए एक समाधान याद आ रहा है। जब वीडियो को एचटीएमएल 5 के साथ खेला जाता है तो एक ब्राउज़र एक्सटेंशन स्थापित करने के लिए एक समाधान हो सकता है जो वीडियो ऑफसेट सेट करता है। लेकिन मामले के लिए वीडियो फ़्लैश के साथ खेला जाता है मुझे यकीन नहीं है कि इसे कैसे प्राप्त किया जाए।
brillout

संयोग से, VLC विकल्प पर है Tools->Track Synchronisation, या --audio-desyncविकल्प के साथ खेलते हैं । मुझे डर है कि मुझे यकीन नहीं है कि इकाइयां क्या हैं, और कौन सी दिशा सकारात्मक है, और मदद मामले पर आगे नहीं बढ़ रही है, लेकिन यह वह जगह है जहां आप देखना चाहते हैं।
दाराएल


क्या आपको इस समस्या का स्थायी समाधान मिल गया है? मैं वर्तमान में A2DP / HSP / A2DP के बीच स्विच करने के लिए समाधान का उपयोग कर रहा हूं, लेकिन हर बार सिंक समस्या होने पर ऐसा करना व्यावहारिक नहीं है।
फ्रेड वुएर्जेस

जवाबों:


37

नहीं, यह सामान्य नहीं है, लेकिन मुझे अपने Altec Lansing iMT525 ब्लूटूथ स्पीकर के साथ कभी-कभी ऐसी ही समस्या हुई है। श्री के उत्तर की अवधारणा में कुछ ऐसा ही मेरे लिए लगभग हमेशा काम करता है, और मुझे इसे केवल एक बार कनेक्ट करने की आवश्यकता है।

PulseAudio को फिर से इनिशियलाइज़ करने के लिए ऑटो-स्विचिंग ब्लूटूथ प्रोफाइल

यदि आप एक अपराधी की तलाश कर रहे हैं, तो मैं उबंटू के साउंड सिस्टम, पल्सअडियो को देखूंगा, और फिर आपका ब्लूटूथ रिसीवर। इसे इस्तेमाल करे:

  • सबसे पहले, अपने ब्लूटूथ डिवाइस को डिलीट और री-पेयर करें।

  • फिर, कॉपी करें और .shअपने होम डायरेक्टरी में एक फ़ाइल में नीचे पेस्ट करें , कहें /home/brillout/pabluezswitch.sh:

    #! / Bin / bash
    BLUEZCARD = `पैक्टल सूची कार्ड संक्षिप्त | egrep -o bluez। * [[: space:]] ` pactl सेट-कार्ड-प्रोफाइल $ BLUEZCARD a2dp pactl सेट-कार्ड-प्रोफ़ाइल $ BLUEZCARD hsp pactl सेट-कार्ड-प्रोफाइल $ BLUEZCARD a2dp
  • टर्मिनल खोलकर और टाइप करके फाइल को निष्पादन योग्य बनाएं chmod +x ~/pabluezswitch.sh

  • सेटिंग्स पर जाएं ... कीबोर्ड ... शॉर्टकट , और एक कस्टम शॉर्टकट बनाएं; जो कुछ भी आप चाहते हैं उसे नाम दें, कमांड के रूप में /home/brillout/pabluezswitch.sh(पथ में उपयुक्त उपयोगकर्ता नाम चुनें!)। लागू करें पर क्लिक करें , और फिर उस दाईं ओर क्लिक करें जहां यह कहता है कि स्क्रिप्ट निष्पादित करने के लिए कीबोर्ड शॉर्टकट सेट करना अक्षम है।

यह क्या करता है पल्सएडियो सिस्टम को प्रोफाइल को स्विच करके अपने हेडसेट / स्पीकर को भेजे जाने वाले ऑडियो को फिर से सिंक्रनाइज़ करने के लिए मजबूर करता है ad2p -> hsp -> a2dp, इस प्रकार उम्मीद है कि किसी भी विलंबता से छुटकारा मिलेगा।


जब भी आप लैग को कनेक्ट और नोटिस करते हैं, तो आपको विलंबता को ठीक करने के प्रयास के लिए ऊपर दिए गए कीबोर्ड शॉर्टकट को दबाया जाना चाहिए - उम्मीद है कि यह आपके लिए काम करता है!


मैं अब कुछ दिनों के लिए इसका उपयोग कर रहा हूं, और यह बहुत अच्छा काम करता है। - 14.04
dpb

7
ध्यान दें कि पैक्टल में भयानक त्रुटि संदेश हैं, और यह कि कई ऑडियो उपकरण में ये ad2pऔर नहीं हैं hsp। मेरा बोस केवल है ad2p_sink, इन दो अन्य नहीं।
ओडिन्हो - वेलमॉन्ट

1
मुझे लगता है कि आपको उस
एरेप

1
मुझे नहीं लगता कि विलंबता की निगरानी करने और इस स्क्रिप्ट को स्वचालित रूप से ट्रिगर करने का एक तरीका है जब यह संदर्भ से कुछ सीमा से अधिक हो? pacmd info | grep "current latency"और pacmd statलगता है कि समान विलंबता संख्या / बफर आकार देने के लिए कोई फर्क नहीं पड़ता कि वास्तविक विलंबता कितनी महान हो जाती है (जैसे जब हेडसेट को सीमा से बाहर ले जाना और उसे वापस लाना होता है), तो शायद स्टैक का एक अलग हिस्सा विलंबता के लिए जिम्मेदार है?
4

2
@ ओडिन्हो-वेलमोंट मेरे बीच काम करता है ad2p_sinkऔर offमेरे लिए काम करता है। मैंने हाल ही में इसे अपने पल्स ऑडियो / वॉल्यूम कंट्रोल स्क्रिप्ट में शामिल किया है जो किसी के लिए उपयोगी हो सकता है
सैम मेसन

21
  • Pavucontrol स्थापित करें: sudo apt install pavucontrol
  • pavucontrolमेनू से चलाएँ
  • आउटपुट डिवाइस पर जाएं
  • ब्लूटूथ डिवाइस पर जाएं
  • उन्नत पर जाएं
  • वहाँ आप मिलीसेकंड (प्लस या माइनस) में मान के लिए विलंबता ऑफसेट सेट कर सकते हैं। मूल्य के बारे में सुनिश्चित करने के लिए आपको किसी भी मूल्य के साथ शुरुआत करने की आवश्यकता है जैसे, 250.00 मील।
  • YouTube से कोई भी "ऑडियो सिंक टेस्ट" चलाएं और प्लेबैक स्पीड को 0.25 पर सेट करें (इसे धीमा करें) और वहां से आप यह नोट करना शुरू कर सकते हैं कि क्या मान सही है या इसे बढ़ाने या घटाने की आवश्यकता है।

2
अनावश्यक सास को जवाब से हटा दिया - अशिष्ट होने की आवश्यकता नहीं है। इसके अलावा, यह लगता है जैसे यह काम करना चाहिए, लेकिन यह वास्तव में मेरे लिए कुछ भी करने के लिए नहीं लगता है ...
naught101

मेरे लिए यह ब्लूटूथ स्पीकर के साथ यूट्यूब प्लेबैक के लिए काम करता है। धन्यवाद। जब मैंने पहली बार pavucontrol खोला तो उन्नत विकल्प छिपा हुआ था। खिड़की का लंबवत विस्तार करना था।
उपयोगकर्ता 75505

11

मुझे कभी-कभी इसी तरह की समस्या आती है, भले ही खिलाड़ी इसका इस्तेमाल करता हो। मेरा एक नोकिया BH-503 ब्लूटूथ स्टीरियो हेडफोन है जिसमें MSI CR400 लैपटॉप और Ubuntu 11.10 है। मैं एक वर्कअराउंड में आया था जिसे आप आज़मा सकते हैं।

  • वीडियो प्लेबैक शुरू करें।
  • साउंड सेटिंग्स> हार्डवेयर पर जाएं।
  • ब्लूटूथ डिवाइस का चयन करें।
  • फिर चयनित डिवाइस ड्रॉप-डाउन के लिए सेटिंग में, टेलीफ़ोनी डुप्लेक्स (एचएसपी / एचएफपी) प्रोफ़ाइल पर स्विच करें, फिर हाई फ़िडेलिटी प्लेबैक (ए 2 डीपी) पर वापस जाएं।

7

यहां शीर्ष उत्तर काम करता है, लेकिन हर ब्लूटूथ ऑडियो डिवाइस के लिए नहीं। कुछ उपकरणों के नाम अलग-अलग प्रोफ़ाइल नाम हैं जो उस पोस्टर में उसके ब्लूटूथ स्पीकर हैं। उदाहरण के लिए, निम्नलिखित कोड में, जो मूल रूप से उस व्यक्ति द्वारा पोस्ट किया गया था, इसमें स्पष्ट रूप से नाम a2dpऔर hsp। उदाहरण के लिए, इनमें से कोई भी मेरे एलजी टन के साथ उपलब्ध नहीं हैं, लेकिन वे मेरे सोनी हेडसेट जैसे अन्य उपकरणों के साथ हैं।

#!/bin/bash

BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp
pactl set-card-profile $BLUEZCARD hsp
pactl set-card-profile $BLUEZCARD a2dp

यह कोड दिखाई देने वाले अधिकांश ब्लूटूथ डिवाइसों के लिए काम करेगा, लेकिन यह उन डिवाइसों के लिए सही ढंग से काम करने के लिए जिनके पास a2dp प्रोफ़ाइल या hsp प्रोफ़ाइल नहीं है, टाइप करें:

pactl list | grep -Pzo '.*bluez_card(.*\n)*'

यह सब कुछ वापस कर देगा जहां यह एक ब्लूटूथ डिवाइस पाता है। उदाहरण के लिए, एलजी टोन अल्ट्रा हेडसेट के साथ, मुझे यह मिलता है:

Name: bluez_card.B8_AD_3E_**_**_**
    Driver: module-bluez5-device.c
    Owner Module: 36
    Properties:
        device.description = "LG HBS810"
        device.string = "B8:AD:3E:**:**:**"
        device.api = "bluez"
        device.class = "sound"
        device.bus = "bluetooth"
        device.form_factor = "headset"
        bluez.path = "/org/bluez/hci0/dev_B8_AD_3E_**_**_**"
        bluez.class = "0x240404"
        bluez.alias = "LG HBS810"
        device.icon_name = "audio-headset-bluetooth"
        device.intended_roles = "phone"
    Profiles:
        a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
        headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes)
        off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
    Active Profile: a2dp_sink
    Ports:
        headset-output: Headset (priority: 0, latency offset: 0 usec)
            Part of profile(s): a2dp_sink, headset_head_unit
        headset-input: Headset (priority: 0, latency offset: 0 usec)
            Part of profile(s): headset_head_unit

हम profilesअनुभाग में रुचि रखते हैं । इस खंड में, हम तीन प्रोफाइल, जो कर रहे हैं a2dp_sink, headset_head_unitऔर off। हमें जिन दो प्रोफाइल की जरूरत है, उनमें (A2DP सिंक) और (HSP / HFP) होना चाहिए। इस मामले में, वे a2dp_sinka2dp प्रोफ़ाइल के लिए, और headsethead_unithsp प्रोफ़ाइल के लिए हैं। सूचना इस मूल पोस्टर के तुलना में अलग है a2dpऔर hsp

अब, उपरोक्त कोड के साथ, हम इसे संशोधित करेंगे और इसे एक फ़ाइल में डाल देंगे। मैंने फाइल मंगवाई bluezswitch.sh

उस निर्देशिका को बदलें जिसे आप फ़ाइल रखना चाहते हैं। यह कहीं भी हो सकता है।

touch bluezswitch.sh

फिर

nano bluezswitch.sh

कॉपी करें और इस टिप्पणी के शीर्ष पर कोड पेस्ट और की जगह a2dpऔर hspसाथ मूल्यों आप मिल गया है जब आप उपरोक्त आदेश भाग गया, और उस फ़ाइल में पेस्ट करें। उदाहरण के लिए, यह वही है जो मेरी फ़ाइल मेरे एलजी टोन के लिए दिखती थी।

#!/bin/bash

BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-card-profile $BLUEZCARD headset_head_unit
pactl set-card-profile $BLUEZCARD a2dp_sink

अब, ctrl-xतो yफ़ाइल और बाहर निकलने नैनो को बचाने के लिए, और फिर फ़ाइल निष्पादन योग्य बनाने:

chmod +x bluezswitch.sh

फिर कीबोर्ड शॉर्टकट सेट करके फॉलो करें जैसा कि समझाया गया है।

सेटिंग्स पर जाएं ... कीबोर्ड ... शॉर्टकट, और एक कस्टम शॉर्टकट बनाएं; जो भी आप चाहते हैं उसे नाम दें, कमांड के साथ /home/brillout/bluezswitch.sh (पथ में स्थानापन्न उपयोगकर्ता नाम!)। लागू करें पर क्लिक करें, और फिर उस दाईं ओर क्लिक करें जहां यह कहता है कि स्क्रिप्ट निष्पादित करने के लिए कीबोर्ड शॉर्टकट सेट करना अक्षम है।

बस इतना ही होना चाहिए। यह उन सभी के लिए काम करना चाहिए जो इससे पहले काम नहीं करते थे।


1
मेरे लिए, को बंद करने a2dp_sink, off, a2dp_sinkअनुक्रम मेरे लिए बहुत अच्छी तरह से काम करता है में। headset_head_unitI / O त्रुटि पर सेट करना ।
मोहम्मद शाहिल

5

एडेप्टिव डिफरेंस पल्स कोड मॉड्यूलेशन में एक लुक-फॉरवर्ड टाइप कंप्रेसिंग एल्गोरिदम शामिल होता है, जहां एनकोडर को आने वाली जानकारी के कई बाइट्स की जांच करने का मौका देने से पहले जानकारी प्रसारित नहीं की जा सकती है। इसलिए, डेटा को एनकोडर में स्टैक करना पड़ता है, और एनकोडर को छोड़ने और छोड़ने वाली धाराओं के बीच एक अंतर्निहित समय बदलाव होता है। बहुत पहले, मैंने वॉइस-ओवर-डेटा टेलीफोनी (अब वीओआईपी) क्या है, की व्यवहार्यता निर्धारित करने के लिए डेटा नेटवर्क देरी का अध्ययन किया। मुझे लगता है कि मैंने निष्कर्ष निकाला है कि ADPCM- शैली संपीड़न / एन्कोडिंग बहुत देरी का परिचय देगा। मुझे लगता है कि इस ब्लूटूथ-देरी की समस्या को दूर करने के लिए, किसी को गैर-संपीड़ित प्रकार के ऑडियो एन्कोडिंग की आवश्यकता हो सकती है जिसमें कम विलंबता होनी चाहिए।


6
संपीड़न समस्या कुछ सेकंड के दसियों मिलीसेकंड के लिए होती है, निश्चित रूप से आधा सेकंड में नहीं?
n

4

मैंने इस समस्या के लिए बहुत कोशिश की, लेकिन कुछ भी इसे ठीक नहीं कर सका। फिर मैं सेट-पोर्ट-लेटेंसी-ऑफसेट पर ठोकर खाई

यदि आप pulseaudio do का उपयोग कर रहे हैं:

pactl list cards short | egrep -o bluez.*[[:space:]]

यह आपको ब्लूटूथ इंटरफ़ेस देगा। अब इसके अनुसार विलंबता निर्धारित करें:

pactl set-port-latency-offset <INTERFACE> speaker-output 100000

मैं 100000 माइक्रोसेकंड का उपयोग कर रहा हूं जो मेरे लिए ठीक काम करता है।


1
किसी अन्य व्यक्ति के उत्तर की तलाश में इस पुरानी पोस्ट को ठोकर मारने के लिए, अरिंदम मणि दास का जवाब पूरी तरह से काम करता है। यदि आपको "ऐसी कोई इकाई नहीं" त्रुटि प्राप्त होती है, तो 'पैक्टल लिस्ट कार्ड' चलाएं और जांचें कि आपके डिवाइस के लिए कौन से पोर्ट उपलब्ध हैं। मुझे दूसरे स्पीकर में "स्पीकर-आउटपुट" को "हेडसेट-आउटपुट" में बदलना पड़ा क्योंकि मेरे डिवाइस में स्पीकर-आउटपुट पोर्ट नहीं है।
बिली फ़ारिंगटन

1

यहां मेरे लिए इसे हल किया गया है: $ sudo apt-get install phonon-backend-vlcऔर सुनिश्चित करें कि यह केडीई में [सिस्टम सेटिंग्स] [मल्टीमीडिया] [ऑडियो और वीडियो सेटिंग्स] [बैकेंड] पर जाएं और [पसंदीदा बटन] का उपयोग करें।


1
@dargaud मैं इसका विस्तार करने की सलाह देता हूं ताकि यह समझाया जा सके कि इसे पसंदीदा बैकेंड कैसे बनाया जाए।
एलियाह कगन

0

जिन व्यक्तियों को यह समस्या हो रही है कृपया इस वेबसाइट को देखें: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-connect-nokia-bh-503-bluaxy-headset-to-your.pc / जिसे आपको डाउनलोड करने की आवश्यकता है, उसकी एक तस्वीर देखने के लिए।

ब्लूटूथ मैनेजर डाउनलोड करें और इसका उपयोग हेडसेट की सेटिंग्स में हेरफेर करने के लिए करें। साउंड सेटिंग को हाई फिडेलिटी प्लेबैक (A2DP) पर सेट करें और फिर साउंड सेटिंग में जाएं।


1
ब्लूटूथ पर जाओ का प्रबंधन और ऑडियो प्रोफाइल पर जाएं और फिर चयन उच्च Fedelity प्लेबैक .. यह thats
एलेक्स फोर्स

0

VLC मीडिया प्लेयर पर, टूल ट्रैक सिंक्रोनाइज़ेशन पर जाएं सिंक्रोनाइज़ करें टैब के तहत ऑडियो / वीडियो ऑडियो ट्रैक सिंक्रोनाइज़ करें, लगभग -0.67 जैसे नकारात्मक मान का उपयोग करें और लैग को पूरी तरह से मुआवजा दिया जाएगा। आपको हर बार नई फ़ाइल खोलने के लिए मैन्युअल रूप से करना होगा। क्रिस


0

इसी तरह टिमम के जवाब में, मेरे पास स्वीकृत जवाब के प्रोफाइल भी नहीं थे। HSP सेट करने में एक त्रुटि कोड दिया गया।

मैंने निम्नलिखित, लगभग समान, स्क्रिप्ट का उपयोग करके समाप्त किया।

#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-card-profile $BLUEZCARD off
pactl set-card-profile $BLUEZCARD a2dp_sink

0

उन सभी वर्षों के बाद भी इस तरह का मुद्दा प्रासंगिक है।

अरिंदम मणि दास के जवाब और बिली फरिंगटन की टिप्पणी के आधार पर मैंने निम्नलिखित शेल स्क्रिप्ट बनाई:

#!/bin/bash
export BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-port-latency-offset $BLUEZCARD headphone-output 100000

मैं 100000 माइक्रोसेकंड का उपयोग कर रहा हूं क्योंकि अरिंदम ने सिफारिश की है और यह मेरे लिए भी ठीक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.