নাড়ী ডুবিতে তোতলা


12

আমি আমার পাইতে রাস্পবিয়ান ইনস্টল করেছি এবং লাউডস্পিকারগুলি ড্রাইভ করে আমার ডেস্কটপ থেকে সমস্ত অডিও স্ট্রিম করার চেষ্টা করে একটি পালস অডিও সিঙ্কটি কনফিগার করেছি।

আমি এই সুন্দর বিবরণ অনুসরণ করেছি: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124

প্রথমদিকে, এটি সমস্যা ছাড়াই কাজ করেছে বলে মনে হয়েছিল। যাইহোক, ডেস্কটপ থেকে প্রেরিত অডিওটি ক্রমাগত পাইয়ের দিকে ঝাঁকুনি দিচ্ছে, যেন মাঝে মাঝে কয়েকটি নমুনা নিখরচায় ধ্রুবক বাফার আন্ডারআন থাকে।

আমি কারণটি খুঁজতে চেষ্টা করে পুরো দিনটি কাটিয়েছি, তবে কোন ফলসই হয়নি। প্রাথমিক সেটআপটি হ'ল:

  • তারযুক্ত ল্যান সংযোগ
  • সর্বশেষতম রাসমিয়ান পাই (26 সেপ্টেম্বর 2013) সর্বশেষ ফার্মওয়্যার আপডেটের সাথে
  • উভয় পক্ষের পালস অডিও ২.০ (উবুন্টু ডেস্কটপ)
  • এমপ্লেয়ার, টোটেম, এফফ্লে এর মাধ্যমে প্লেব্যাক করুন
  • মডিউল-নেটিভ-প্রোটোকল-টিসিপি মাধ্যমে নেটওয়ার্ক ট্রান্সমিশন

এটি আমি চেষ্টা করেছি:

  • সরাসরি পাইতে অডিও বাজানো নিখুঁতভাবে কাজ করে।
  • অন্যান্য (ডেস্কটপ) কম্পিউটারে স্ট্রিমিং ঠিকঠাক কাজ করে।
  • সরাসরি সংযোগ দিয়ে অডিও প্রেরণ করা (UL PULSE_SERVER নির্দিষ্ট করে) খুব সামান্য তোতলা দিয়ে খুব ভাল কাজ করে, তবে এখনও সমস্যা -২ এর ঝুঁকিতে রয়েছে (নীচে দেখুন)
  • ডেস্কটপের মাধ্যমে অডিও প্রেরণ করা পুলস অডিও টানেলিং অবিচ্ছিন্ন তোতলা দেয়
  • অগ্রাধিকার / রিয়েলটাইম সময়সূচী বাড়ানো ... সাহায্য করেনি
  • স্যাম্পলিংয়ের হার 48 কেএইচজেডে স্থির করা ... সাহায্য করেনি
  • "তুচ্ছ" এ পুনরায় মডেলিং অ্যালগরিদম সেট করা ... সাহায্য করেনি
  • ডিফল্ট-টুকরোগুলি / খণ্ড-আকার সামঞ্জস্য করা ... কোনও সাহায্য করেনি
  • পালস অডিও লগগুলিতে আমি কোনও সমস্যার ইঙ্গিত পাই না (আমি প্লেব্যাক শুরু করার সময় থেকেই দেখানো হয়েছে):

    D: [alsa-sink] protocol-native.c: Requesting rewind due to end of underrun.
    D: [alsa-sink] sink-input.c: Requesting rewind due to uncorking
    D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0000, resuming
    I: [alsa-sink] alsa-sink.c: Trying resume...
    I: [alsa-sink] alsa-util.c: cannot disable ALSA period wakeups
    D: [alsa-sink] alsa-util.c: Maximum hw buffer size is 341 ms
    D: [alsa-sink] alsa-util.c: Set buffer size first (to 16384 samples),  period size second (to 16384 samples).
    I: [alsa-sink] alsa-util.c: ALSA period wakeups were not disabled
    D: [alsa-sink] alsa-sink.c: Latency set to 25.00ms
    D: [alsa-sink] alsa-sink.c: hwbuf_unused=60736
    D: [alsa-sink] alsa-sink.c: setting avail_min=15665
    I: [alsa-sink] alsa-sink.c: Time scheduling watermark is 15.00ms
    I: [alsa-sink] alsa-sink.c: Resumed successfully...
    I: [alsa-sink] alsa-sink.c: Starting playback.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes busy.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half.
    D: [alsa-sink] ratelimit.c: 115 events suppressed
    D: [alsa-sink] alsa-sink.c: Wakeup from ALSA!
    ... no more output, but stuttering continues ...
    

সমস্যা 2: যেমন উপরে বলা হয়েছে, আমি সরাসরি সংযোগের সাথে বেশ ওকে অডিও পেতে পারি। যাইহোক, স্ট্রিমের (এমপ্লেয়ার ব্যবহার করে) কয়েকটি স্কিপ করার পরে, পালস অডিও সার্ভারটি হ্যাং হয়ে যায় এবং কোনও অডিও প্লে করে না। কখনও কখনও এমপ্লেয়ার পুনরায় চালু করে এটি পুনরুদ্ধার করা যায়। কখনও কখনও এটি এত খারাপভাবে ঝুলে যায় যে পালস অডিওকে পুনরায় চালু করতে হবে। এমনকি আমি যখন কেবলমাত্র ভলিউমের স্তর পরিবর্তন করি তখন এটি স্থির থাকে।

পালস অডিও ডক্স অনুসারে, একটি টানেলযুক্ত সংযোগের উপরে সরাসরি সংযোগের সুবিধাটি হল আরও ভাল বাফারিং নিয়ন্ত্রণ রাখা, যা দেখে মনে হয় যে আমি কেন সরাসরি সংযোগ দিয়ে ভাল অডিও পাই: http://www.freedesktop.org/wiki/Software / PulseAudio / নথিপত্র / ব্যবহারকারী / নেটওয়ার্ক /

আমি এখন ধারণার বাইরে। হোঁচট খাওয়া এবং সমস্যা 2 কী হতে পারে? ডিবাগিং কীভাবে এগিয়ে যাওয়া যায় তার একটি ধারণাও প্রশংসিত হবে।


আপনি সরাসরি অডিওটি কীভাবে খেললেন? অ্যাপ্লে নিয়ে আমার কোনও সমস্যা হয়নি, তবে পাপলে স্টুটার্স এবং ইকোগুলি ভয়ঙ্কর।
জন লা রুই

আমি এমপ্লেয়ার, টোটেম, ম্যাডপ্লে ... ব্যবহার করেছি ... তবে বিভিন্ন খেলোয়াড়রা আমার অনুমানটিকে সমর্থন করে যে এটি ডেটা বাফারিংয়ের সাথে একটি সফ্টওয়্যার সমস্যা বলে মনে হয় different কিছু খেলোয়াড় অন্যদের তুলনায় রিয়েল-টাইমের চেয়ে বেশি ডেটা এগিয়ে দেয়।
farindk

সাইন ওয়েভ খেলতে আমার সমস্যা হচ্ছে । আমি মনে করি ল্যানের উপর দিয়ে স্ট্রিমিংয়ের চেষ্টা করার আগে আমার এটি সমাধান করা দরকার।
জন লা রুই

উত্তর:


6

tsched_buffer_sizeএবং tsched_buffer_watermarkসেটিংস ছিল এটি আমার জন্য কাজ করে।

আমি আমার পালস অডিওকে একটি সিস্টেম দৃষ্টান্ত হিসাবে চালিত করি, তাই কনফিগারেশনটি ভিতরে রয়েছে /etc/pulse/system.pa। আপনি যদি এর পরিবর্তে কোনও সেশন উদাহরণ ব্যবহার করেন তবে কনফিগারেশনটি আসবে /etc/pulse/default.pa

এটি ডিফল্ট:

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev/hal  support)
load-module module-detect
.endif

আমি এটি দিয়ে এটি প্রতিস্থাপন করেছি: (যেমন, এটি মন্তব্য করে)

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
#load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev/hal  support)
#load-module module-detect
.endif

তারপরে আমি নিম্নলিখিত লাইনটি যুক্ত করেছি:

load-module module-alsa-card device_id=0 tsched=true tsched_buffer_size=1048576 tsched_buffer_watermark=262144

Http://www.freedesktop.org/wiki/Software/PulseAudio/ ডকুমেন্টেশন / ইউজার / মডুলস /#index6h3 দেখুন


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

একই ধরণের ইস্যুতে চলছে। আমার বিশেষ ক্ষেত্রে, PULSE_SERVER + এমপ্লেয়ার একটি কবজির মতো কাজ করে, যখন PULSE_SERVER + ক্লিমেটাইন (যা আমি বিশ্বাস করি gstreamer ব্যবহার করছে) স্টুটারগুলি মারাত্মকভাবে ছড়িয়ে দেয়। কোন ধারণা দুজনের মধ্যে কি আলাদা?
জোনাথন প্রোটজেনকো

@ প্রোটজেনকো: কোনও উত্সের দিকে না তাকিয়ে আমার ধারণা হ'ল এমপ্লেয়ার প্যালস অডিওকে অবরুদ্ধ না করা পর্যন্ত ডেটা ঠেলাতে পারে, যখন গিস্ট্রিমার রিয়েলটাইম রেফারেন্স দ্বারা ক্লকড ডেটা প্রেরণ করতে পারে। এর অর্থ হ'ল পূর্বের মামলায় বাফাররা অনেক বেশি ভরে যায় এবং ফলস্বরূপ, আরও বেশি বিলম্ব হয়।
farindk

আমি একই সমস্যা দেখছি PULSE_SERVER + ffmpeg জরিমানা, PULSE_SERVER + এমপিডি শাটার এবং অন্তর্নিহিত আন্ডারআর্টস
রিমুন্ডো হেলুয়ানি

3

মূল কথাটি হ'ল আপনাকে অবশ্যই ব্যবহার module-tunnel-sink-newকরতে হবে তবে রাস্পবেরি পাই 1-তে স্টটারহীন নেটওয়ার্ক অডিও পেতে আপনাকে আরও কয়েকটি পরিবর্তন করতে হবে।

  1. রিয়েলটাইম অগ্রাধিকার সহ রাস্পবেরি পাইতে পালসোদিও চালান:
pulseaudio --start --high-priority=yes --realtime=yes

আসুন কম্পিউটারটি বোঝাতে প্রেরক শব্দটি ব্যবহার করুন যা আপনার রাস্পবেরি পাইতে স্ট্রিম প্রেরণ করে।

  1. সেট default-fragmentsএবং default-fragment-size-msecএর মধ্যে daemon.confপ্রেরক এই মান হবে:
default-fragments = 8
default-fragment-size-msec = 12
  1. প্রেরককেmodule-tunnel-sink-new এই কমান্ডটি জারি করে ব্যবহার করুন (আপনার রাস্পবেরি পাইটির হোস্টনামটি RP1 হিসাবে ধরে নিচ্ছেন এবং আপনার স্থানীয় নেটওয়ার্কে এমডিএনএস রয়েছে Otherwise অন্যথায়, কেবল আপনার রাস্পবেরি পাইয়ের আইপি অ্যাড্রেস ব্যবহার করুন)।
pactl load-module module-tunnel-sink-new server=RP1.local

এই সেটিংসের সাহায্যে আমি 54 এমবিপিএস-এ অপারেটিংহীন একটি ওয়্যারলেস নেটওয়ার্কের মাধ্যমে রাস্পবেরি 1 থেকে স্টটার-ফ্রি অডিও পেয়েছি (আমার সেটআপে, প্রেরক ইথারনেট ব্যবহার করে এবং আরপি 1 ওয়ালান ব্যবহার করছে)। প্রকৃতপক্ষে, এটি তখনও কাজ করে যখন প্রেরক এবং রাস্প্পেরিপি উভয়ই ওয়ালান ব্যবহার করে, কমপক্ষে ওয়্যারলেস নেটওয়ার্কে অন্য কোনও ডিভাইস না থাকলে।


এখন পর্যন্ত দুর্দান্ত কাজ করে। আমি পাই যে আমার পাই 3 এর জন্য (কিছুটা নতুন ডেবিয়ান / সফ্টওয়্যার সহ) "ডিফল্ট-টুকরা" সেটিংস বাছাইয়ের জন্য আমাকে অন্য কিছু পরিবর্তন করতে হয়েছিল। (যথা, কিছু সেটিং tsched=0, উইকি.আরচলিনাক্স.org
ইন্ডেক্স.এফপি

যদি আপনি এখনও তোতলামি অনুভব করেন তবে আর্চ উইকিটি আরটিপি স্ট্রিমিং প্রোটোকলেও পরিবর্তন করার পরামর্শ দেয়: উইকি.আরচলিনক্স.org
পুলস

1

আপনি এই পৃষ্ঠাটি চেক আউট করেছেন:

http://manpages.ubuntu.com/manpages/lucid/man5/pulse-daemon.conf.5.html

ডিফল্ট ফ্রেগমেন্ট সেটিং

   Some hardware drivers  require  the  hardware  playback  buffer  to  be
   subdivided  into  several  fragments.  It  is  possible to change these
   buffer metrics for machines with high  scheduling  latencies.  Not  all
   possible  values  that  may  be  configured  here  are available in all
   hardware. The driver will to find the nearest setting supported. Modern
   drivers that support timer-based scheduling ignore these options.

   default-fragments= The default number of fragments. Defaults to 4.

   default-fragment-size-msec=The  duration of a single fragment. Defaults
   to 25ms (i.e. the total buffer is thus 100ms long).

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

1

উত্তেজনা বা সময়সীমা সমস্যা থেকে মুক্তি পেতে একটি এফডাব্লু ডাউনগ্রেড চেষ্টা করুন:

sudo rpi-update eeb2e51c3e08cd5efa4246aa8dc54a09b25ada12

1
সতর্কতাrpi-update এই ফ্যাশনে ব্যবহার আপনার সিস্টেমে কী করতে পারে সে সম্পর্কে সচেতন হন ।
আর্থলেলন

@ প্রথমতম আপনি কমপক্ষে একটি রেফারেন্স দিতে পারেন বা rpi-updateএই ফ্যাশনটি ব্যবহার করে আমাদের সিস্টেমে কী করতে পারে তা আমাদের জানানোর চেষ্টা করতে পারেন ...
ব্যবহারকারীর ১১১১১

ম্যানুয়ালটি পড়তে ভুলবেন না এবং এটি আপনার সিস্টেম এবং যে কোনও সম্ভাব্য ঝুঁকিকে কীভাবে প্রভাবিত করে তা বোঝার জন্য কিছু গবেষণা করুন।
আর্থলেলন

0

আমি সনাক্ত করেছি যে এই সমস্যাটি কার্নেল সংস্করণের সাথে সম্পর্কিত হতে পারে। 3.6.11 থেকে 3.12.0 থেকে আপগ্রেড করার পরে আমি ক্রমাগত সেই আন্ডারগ্রাউন্ডগুলি পেয়েছি। 3.6.11 এ ফিরে আসা একটি ডাউনগ্রেড আমার জন্য সমস্যার সমাধান করেছে।


0

আমি এই পৃষ্ঠাটি কয়েকবার পড়ছি ... আমি রাস্পবেরিপি-পালসিউডিও-নেটওয়ার্ক সংমিশ্রণটি নিয়েও হতাশ হয়ে পড়েছি। আমি আরও কিছুটা অনুসন্ধান করেছি এবং এমন একটি পৃষ্ঠা খুঁজে পেয়েছি যেখানে সমাধানের একটি অংশ পেয়েছি:

=> মডিউল-সাসপেন্ড-অন-নিষ্ক্রিয় ডিফল্ট.পা (অথবা system.pa) এ অক্ষম করুন।

দেখ, তোতলা মিটিয়ে গেছে!

এখন কেবল সমস্যাটি হল কিছুক্ষণ পরে (10 থেকে 20 সেকেন্ড) প্লেব্যাকটি স্তব্ধ হয়ে যায়: - /

কোন পরামর্শ?

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