A2DP দিয়ে ব্লুটুথের মাধ্যমে অডিও খেললে 0.5 এর বিলম্ব থেকে মুক্তি পান


49

শিরোনামে বর্ণিত হিসাবে আমি A2DP এর সাথে ব্লুটুথের মাধ্যমে অডিও খেলতে গিয়ে আধা সেকেন্ডের বিলম্ব অনুভব করি।
শব্দটি ভিডিওর সাথে সিঙ্ক্রোনাইজ না হওয়ায় চলচ্চিত্রগুলি দেখা সম্ভব হয় না।

আমি নিশ্চিত না যে বিলম্বটি ব্লুটুথ স্ট্যান্ডার্ড, A2PD প্রোটোকল, উবুন্টু 12.04 এ A2DP বাস্তবায়ন বা বেলকিন জেড 73 ব্লুটুথ রিসিভারের কারণে হয়েছে কিনা if

যাইহোক, এটা কি স্বাভাবিক ল্যাগ? কোনও লক্ষণীয় বিলম্ব ছাড়াই ব্লুটুথের মাধ্যমে অডিও চালানোর কোনও উপায় আছে কি?


9
আপনার সমস্যার আসল সমাধান নয় বরং একটি কর্মপরিকল্পনা: এটি যদি কেবল সিনেমা চালানো সম্পর্কে হয় তবে আপনি অডিও / ভিডিও অফসেটটি সামঞ্জস্য করতে পারেন যা ভিডিওতেও বিলম্ব করবে। ব্যবহার করে mplayer, আপনি কী +এবং টিপুন করে তা করেন -। ভিএলসিতে, আমি কীভাবে বিলম্ব সেট করতে জানি না, তবে ভিএলসির কাছে এমন বিকল্প না থাকলে আমি অবাক হয়ে যাব।
লীমস

আমি এটি সম্পর্কে ভেবেছিলাম তবে আমি ইউটিউবের জন্য একটি সমাধান মিস করছি। ভিডিওটি এইচটিএমএল 5 এর সাথে খেললে একটি সমাধান হতে পারে কোনও ব্রাউজার এক্সটেনশান ইনস্টল করা যা কোনও ভিডিও অফসেট সেট করে। তবে মামলার জন্য ভিডিওটি ফ্ল্যাশ দিয়ে চালানো হয়েছে আমি কীভাবে এটি অর্জন করব তা নিশ্চিত নই।
দুর্দান্ত

ঘটনাচক্রে, ভিএলসি বিকল্পটি উপস্থিত রয়েছে Tools->Track Synchronisationবা --audio-desyncবিকল্পটি নিয়ে খেলুন । আমি আশঙ্কা করছি যে ইউনিটগুলি কী, এবং কোন দিকটি ইতিবাচক, তা আমি নিশ্চিত নই এবং এই বিষয়ে সহায়তাটি আগমন করছে না, তবে এটিই আপনি দেখতে চান that's
দারেল


আপনি কি এই সমস্যার স্থায়ী সমাধান খুঁজে পেয়েছেন? আমি বর্তমানে A2DP / HSP / A2DP এর মধ্যে স্যুইচ করার জন্য সমাধানটি ব্যবহার করছি, তবে প্রতিবার সিঙ্কের সমস্যায় এমনটি করা কার্যকর নয়।
ফ্রেড উয়েরজেস

উত্তর:


37

না, এটি সাধারণ নয় তবে মাঝে মাঝে আমার অ্যালটেক ল্যানসিং আইএমটি 525 ব্লুটুথ স্পিকারগুলির সাথেও আমার একই সমস্যা হয়েছিল। শ্রী এর উত্তরের মত ধারণায় অনুরূপ কিছু প্রায়শই আমার জন্য কাজ করে এবং প্রতি সংযোগে আমার একবার এটি করা দরকার।

পালস অডিওকে পুনরায় সূচনা করতে ব্লুটুথ প্রোফাইলগুলি স্বয়ংক্রিয়ভাবে স্যুইচ করা হচ্ছে

আপনি যদি কোনও অপরাধীর সন্ধান করে থাকেন তবে আমি উবুন্টুর সাউন্ড সিস্টেম, পালস অডিওকে প্রথমে এবং তারপরে আপনার ব্লুটুথ রিসিভারটি দেখতে চাই। এটা চেষ্টা কর:

  • প্রথমে আপনার ব্লুটুথ ডিভাইসটি মুছুন এবং পুনরায় যুক্ত করুন।

  • তারপরে, .shআপনার হোম ডিরেক্টরিতে কোনও ফাইলে নীচে অনুলিপি করুন এবং আটকান , বলুন /home/brillout/pabluezswitch.sh:

    #! / বিন / ব্যাশ
    BLUEZCARD = act প্যাক্টেল তালিকা কার্ডগুলি ছোট egrep -o bluz। * [[: স্পেস:]] ` প্যাকটেল সেট-কার্ড-প্রোফাইল $ ব্লুয়েজকার্ড এ 2 ডিপি প্যাকটেল সেট-কার্ড-প্রোফাইল $ ব্লুয়েজকার্ড এইচএসপি প্যাকটেল সেট-কার্ড-প্রোফাইল $ ব্লুয়েজকার্ড এ 2 ডিপি
  • একটি টার্মিনাল এবং টাইপ করে ফাইলটিকে সম্পাদনযোগ্য করে তুলুন chmod +x ~/pabluezswitch.sh

  • সেটিংসে যান ... কীবোর্ড ... শর্টকাট , এবং একটি কাস্টম শর্টকাট তৈরি করুন; কমান্ডটি দিয়ে যা চান তার /home/brillout/pabluezswitch.shনাম দিন (পথের উপযুক্ত ব্যবহারকারীর নাম রাখুন!)। প্রয়োগ ক্লিক করুন এবং তারপরে ডানদিকে ক্লিক করুন যেখানে স্ক্রিপ্টটি সম্পাদন করতে কীবোর্ড শর্টকাট সেট আপ করতে অক্ষম আছে বলে says

এটি যা করে তা হ'ল পালস অডিও সিস্টেমে প্রোফাইলগুলি স্যুইচ করে আপনার হেডসেট / স্পিকারগুলিতে পাঠানো অডিওটিকে পুনরায় সংশ্লেষ করতে বাধ্য করছে ad2p -> hsp -> a2dp, সুতরাং আশা করা যায় যে কোনও বিলম্ব থেকে মুক্তি পাওয়া যায়।


যখনই আপনি সংযোগ এবং ল্যাগটি লক্ষ্য করেন, আপনার বিলম্বটি ঠিক করার চেষ্টা করার জন্য উপরে নির্বাচিত কীবোর্ড শর্টকাট টিপতে হবে - আশা করি এটি আপনার পক্ষে কাজ করে!


আমি এখন কয়েক দিন ধরে এটি ব্যবহার করছি এবং এটি দুর্দান্ত কাজ করে। - 14.04
dpb

7
নোট করুন যে প্যাকটলে ভয়াবহ ত্রুটি বার্তা রয়েছে এবং অনেকগুলি অডিও সরঞ্জামগুলিতে এইগুলি নেই ad2pএবং hsp। আমার বোসের কেবল ad2p_sinkএই দুটি আছে না not
ওডিনহো - ভেলমন্ট

1
আমার মনে হয় আপনার
এড্রেপ

1
আমি মনে করি না যে লেটেন্সিটি নিরীক্ষণের এবং এই স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে ট্রিগার করার কোনও উপায় আছে যখন এটি রেফারেন্সের উপরের কিছু প্রান্তিক ছাড়িয়েছে? pacmd info | grep "current latency"এবং pacmd statএকই ল্যাটেন্সি নম্বর / বাফার আকারটি প্রকৃত লেটেন্সি যত বড় হয় তা বিবেচনা করে মনে হচ্ছে (উদাহরণস্বরূপ যখন হেডসেটটি পরিসীমা থেকে বের করে এনে আবার ফিরিয়ে আনা হয়), সুতরাং স্ট্যাকের একটি অন্য অংশটি দেরি করার জন্য দায়ী?
পোনকডুডল

2
@ ওডিনহো-ভেলমন্ট আমার সাথে টগল করছে ad2p_sinkএবং offআমার পক্ষে কাজ করে। আমি সম্প্রতি আমার পালস অডিও / ভলিউম নিয়ন্ত্রণ স্ক্রিপ্ট এ এটি যুক্ত করেছি যা কারও পক্ষে সহায়ক হতে পারে
স্যাম ম্যাসন

21
  • প্যাভুকন্ট্রোল ইনস্টল করুন: sudo apt install pavucontrol
  • pavucontrolমেনু থেকে চালান
  • আউটপুট ডিভাইসগুলিতে যান
  • ব্লুটুথ ডিভাইসে যান
  • উন্নত যান
  • সেখানে আপনি মিলসেকেন্ড (প্লাস বা বিয়োগ) এর মানটিতে অফসেটটি অফসেট সেট করতে পারেন। মানটি নিশ্চিত করতে আপনার যে কোনও মান দিয়ে শুরু করতে হবে যেমন, 250.00 মাইল।
  • ইউটিউব থেকে যে কোনও "অডিও সিঙ্ক টেস্ট" খেলুন এবং প্লেব্যাকের গতি 0.25 এ সেট করুন (এটি ধীর করে দিন) এবং সেখান থেকে আপনি মানটি সঠিক কিনা বা বাড়ানো বা হ্রাস করতে হবে কিনা তা লক্ষ্য করা শুরু করতে পারেন।

2
উত্তর থেকে অপ্রয়োজনীয় স্যাস সরানো - অভদ্র হওয়ার দরকার নেই। এছাড়াও, এটির মতো শোনাচ্ছে এটি কাজ করা উচিত তবে এটি আমার পক্ষে আসলে কিছু করার মতো বলে মনে হচ্ছে না ...
naught101

আমার জন্য এটি ব্লুটুথ স্পিকারের সাথে ইউটিউব প্লেব্যাকের জন্য কাজ করেছে। ধন্যবাদ। আমি যখন প্রথম প্যাভুকন্ট্রোল খুলি তখন উন্নত বিকল্পটি গোপন ছিল। উইন্ডোটি উল্লম্বভাবে প্রসারিত করতে হয়েছিল।
ব্যবহারকারী 75505

11

খেলোয়াড় যতই ব্যবহৃত হোক না কেন আমি মাঝে মাঝে একই সমস্যা পাই get মাইন নোকিয়া বিএইচ -503 ব্লুটুথ স্টেরিও হেডফোন যার সাথে এমএসআই সিআর 400 ল্যাপটপ এবং উবুন্টু ১১.১০ রয়েছে। আমি এমন একটি ঘটনা ঘটিয়েছিলাম যা আপনি চেষ্টা করতে পারেন।

  • ভিডিও প্লেব্যাক শুরু করুন।
  • সাউন্ড সেটিংস> হার্ডওয়্যার এ যান।
  • ব্লুটুথ ডিভাইসটি নির্বাচন করুন।
  • তারপরে নির্বাচিত ডিভাইসটির ড্রপ-ডাউনের জন্য সেটিংসে, টেলিফোনি ডুপ্লেক্স (এইচএসপি / এইচএফপি) প্রোফাইলে স্যুইচ করুন, তারপরে হাই ফিডেলিটি প্লেব্যাক (A2DP) এ ফিরে যান।

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

এই কোডটি দেখা যায় এমন বেশিরভাগ ব্লুটুথ ডিভাইসগুলির জন্য কাজ করবে, তবে যে ডিভাইসগুলির এডিডিপি বা এইচএসপি প্রোফাইল নেই তাদের জন্য এটি সঠিকভাবে কাজ করতে, টাইপ করুন:

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। আমাদের যে দুটি প্রোফাইলের প্রয়োজন তা তাদের (এ 2 ডি পি সিঙ্ক) এবং (এইচএসপি / এইচএফপি) থাকা উচিত। এই ক্ষেত্রে, তারা a2dp_sinka2dp প্রোফাইলের জন্য, এবং headsethead_unitএইচএসপি প্রোফাইলের জন্য। লক্ষ্য করুন এটি মূল পোস্টারের 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 কমান্ডটি দিয়ে (যা সঠিক পথে ব্যবহারকারীর নাম পরিবর্তন করুন!) হিসাবে আপনি যা চান তার নাম দিন। প্রয়োগ ক্লিক করুন এবং তারপরে ডানদিকে ক্লিক করুন যেখানে স্ক্রিপ্টটি সম্পাদন করতে কীবোর্ড শর্টকাট সেট আপ করতে অক্ষম আছে বলে says

এটি সেখানে থাকা উচিত। এটি সবার জন্য কাজ করা উচিত যা এটি আগে কাজ করে না।


1
আমার জন্য, বন্ধ করে রাখলে a2dp_sink, off, a2dp_sinkক্রম আমার জন্য খুব ভাল কাজ করে না। headset_head_unitI / O ত্রুটি সেট করা হচ্ছে ।
মোহাম্মদ শাহরিল

5

অভিযোজিত ডিফারেনশিয়াল পালস কোড মড্যুলেশনে একটি আগাম ধরণের সংশ্লেষকারী অ্যালগরিদম জড়িত থাকে যেখানে এনকোডারটি আসন্ন তথ্যের কয়েকটি বাইট পরীক্ষা করার সুযোগ পাওয়ার আগে তথ্য প্রেরণ করা যায় না। সুতরাং, ডেটা এনকোডার মধ্যে স্ট্যাক আপ করতে হবে, এবং এনক্রোডার প্রবেশ এবং প্রস্থান প্রবাহ মধ্যে একটি অন্তর্নিহিত সময় স্থানান্তর আছে। অনেক আগে, ভয়েস-ওভার-ডেটা টেলিফোনি (এখন ভিওআইপি কী) এর সম্ভাব্যতা নির্ধারণ করতে আমি ডেটা নেটওয়ার্ক বিলম্বের একটি গবেষণা করেছি। আমি মনে করি যে আমি এই সিদ্ধান্ত নিয়েছি যে ADPCM- স্টাইলের সংক্ষেপণ / এনকোডিং খুব বেশি বিলম্ব প্রবর্তন করবে। আমি মনে করি এই ব্লুটুথ-বিলম্ব সমস্যাটি কাটিয়ে ওঠার জন্য, একটির জন্য একটি নন-কমপ্রেসিং ধরণের অডিও এনকোডিং প্রয়োজন হতে পারে যার কম বিলম্ব হওয়া উচিত।


6
সংক্ষেপণের সমস্যাটি কয়েক দশক মিলিসেকেন্ডের জন্য অ্যাকাউন্ট হবে, আধা সেকেন্ড না, অবশ্যই?
nnot101

4

আমি এই সমস্যার দিকে অনেক দৃষ্টিভঙ্গি চেষ্টা করেছি, কিন্তু কিছুই এটি সমাধান করতে পারে নি। তারপরে আমি সেট-পোর্ট-লেটেন্সি-অফসেটে হোঁচট খেয়েছি

আপনি যদি পালসওডিও ব্যবহার করছেন তবে:

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

এটি আপনাকে ব্লুটুথ ইন্টারফেস দেবে। এখন সেই অনুসারে বিলম্বটি সেট করুন:

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

আমি 100000 মাইক্রোসেকেন্ড ব্যবহার করছি যা আমার পক্ষে ভাল কাজ করে।


1
উত্তর সন্ধানের জন্য এই পুরানো পোস্ট জুড়ে অন্য কারও পক্ষে হোঁচট খাচ্ছে, অরিন্দম মণি দাসের উত্তর পুরোপুরি কার্যকর। যদি আপনি "এ জাতীয় কোনও সত্তা" ত্রুটিটি পান তবে 'প্যাক্টেল তালিকা কার্ডগুলি' চালান এবং আপনার ডিভাইসের জন্য কোন বন্দরগুলি উপলভ্য তা পরীক্ষা করুন। আমার ডিভাইসের স্পিকার-আউটপুট পোর্ট না থাকায় আমাকে দ্বিতীয় কমান্ডে "স্পিকার-আউটপুট" পরিবর্তন করতে হয়েছিল head
বিলি ফারিংটন

1

এটি আমার জন্য কী সমাধান হয়েছে তা এখানে: $ sudo apt-get install phonon-backend-vlcএবং নিশ্চিত করুন যে এটি পছন্দসই ব্যাকএন্ডে রয়েছে, কে.ডি.এ [সিস্টেম সেটিংস] [মাল্টিমিডিয়া] [অডিও এবং ভিডিও সেটিংস] [ব্যাকএন্ড] এ যান এবং [পছন্দসই বোতাম] ব্যবহার করুন


1
@দারগৌদ আমি এটির পছন্দসই ব্যাকএন্ড কীভাবে তৈরি করব তা ব্যাখ্যা করার জন্য এটি প্রসারিত করার পরামর্শ দিচ্ছি।
এলিয়াহ কাগন

0

যে ব্যক্তিরা এই সমস্যায় আছেন তাদের দয়া করে এই ওয়েবসাইটটি দেখুন: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-to-connect-nokia-bh-503-bluetuth-headset-to-your-pc / আপনাকে ডাউনলোড করার দরকারের একটি চিত্র দেখতে।

ব্লুটুথ ম্যানেজারটি ডাউনলোড করুন এবং হেডসেটের সেটিংসটি পরিচালনা করতে এটি ব্যবহার করুন। উচ্চ ফিডিলিটি প্লেব্যাক (A2DP) এ সাউন্ড সেটিংস সেট করুন এবং তারপরে সাউন্ড সেটিংসে যান।


1
ব্লুটুথ পরিচালনায় যান এবং অডিও প্রোফাইলে যান এবং তারপরে হাই ফেডিলিটি প্লেব্যাক নির্বাচন করুন .. এটি চালিয়ে যায়
অ্যালেক্স ফোর্স

0

ভিএলসি মিডিয়া প্লেয়ারে, সরঞ্জামগুলিতে যান ট্র্যাক সিঙ্ক্রোনাইজেশন সিঙ্ক্রোনাইজ ট্যাব অডিও / ভিডিও অডিও ট্র্যাক সিঙ্ক্রোনাইজের অধীনে, প্রায় -0.67 এর মতো নেতিবাচক মান ব্যবহার করুন এবং ল্যাগটি সম্পূর্ণরূপে ক্ষতিপূরণ পাবে। প্রতিবার নতুন ফাইল খুললে আপনাকে ম্যানুয়ালি এটি করতে হবে। ক্রিস


0

টিমমের উত্তরের মতো, আমার কাছে গৃহীত উত্তরের প্রোফাইলগুলিও ছিল না। এইচএসপি সেট করা একটি ত্রুটি কোড দিয়েছে।

আমি নিম্নলিখিতটি প্রায় অভিন্ন, স্ক্রিপ্টটি ব্যবহার করে শেষ করেছি।

#!/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 মাইক্রোসেকেন্ড ব্যবহার করছি এবং এটি আমার জন্যও দুর্দান্ত কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.