একটি পালস অডিও সিঙ্ক কীভাবে সেট আপ করবেন?


16

আমি আমার পিসি থেকে সমস্ত সিস্টেমের শব্দটি স্ট্রিম করার জন্য আমার রাস্পবেরি পাইয়ের উপর একটি পালস অডিও সিঙ্ক স্থাপন করার চেষ্টা করছি। এটি করার সর্বোত্তম উপায় কী?

উদাহরণস্বরূপ, সিনেমাগুলি দেখা কি সম্ভব বা ল্যাটেন্সি খুব বেশি? আমি gstreamer ব্যবহার করে কিছুক্ষণ আগে এটি চেষ্টা করেছি, তবে প্রায় 2 সেকেন্ডের বিলম্বের সাথে, যা আমার প্রয়োজনীয়তার জন্য অকেজো।


1
আমি এক বা দ্বিতীয় বিলম্ব পেতে পারি।
স্বর্ণলোকস

উত্তর:


19

সরকারী নির্দেশাবলী একটি নেটওয়ার্কে একটি "সরাসরি সংযোগ" সবচেয়ে মানুষের জন্য আশা শুধু কাজ তৈরি করার জন্য, কিন্তু এটা pulseaudio বলে মনে হয় এবং আমি বরাবর যে ভাল পাবেন না: এটা আমাকে গ্রহণ ঘণ্টা । ["সরাসরি সংযোগ" ছাড়াও, আপনি আরও নীচে বর্ণিত একটি "টানেল" পদ্ধতি ব্যবহার করতে পারেন, তবে আমি এটি প্রথমে পড়ার পরামর্শ দিই]]

আমার কাছে এখন পাই (ফেডোরা 17) ডেস্কটপ স্ট্রিমিং শব্দ sound আমি /etc/pulseউভয় পক্ষের কনফিগার ফাইলগুলি ছোট করে ফেলেছি । ডেস্কটপ দিকে:

/etc/pulse/client.conf

# See man pulse-client.conf
default-server = tcp:192.168.2.13:4713

আমার পাই এর ল্যান ঠিকানা ডিফল্ট পলসৌদিও বন্দরের সাথে। তবে এখানে এমন কিছু যা আমাকে কিছুক্ষণের জন্য বিভ্রান্ত করেছিল - একটি সার্ভার নির্দিষ্ট করে দিয়ে, পালসওডিওও শুরু করা যায় না:

> pulseaudio --start
N: [pulseaudio] main.c: User-configured server at tcp:192.168.2.13:4713, refusing to start/autospawn.

এটি অগ্রভাগে চলবে (সম্ভবত এটি তখন নাড়ি-ক্লায়েন্ট.কোনফটি পড়ে না?)। যাইহোক , এটি দেখা যাচ্ছে যে, আপনাকে ডেস্কটপ (প্রেরণ) দিকে এটি চালাতে হবে না, এমন কিছু যা পালসওডিও ডক্সে বানান নয়। lsof -i -Pএটি ব্যবহার করে দেখা যায় যে বিভিন্ন মিডিয়া প্লেয়ারগুলির জন্য নিম্ন স্তরের প্লাগইনগুলি কাজ করে।

সুতরাং, ডেস্কটপ / ক্লায়েন্টের পাশে সেই এক লাইন "ক্লায়েন্ট.কনফ" আসলে আপনার যা দরকার তা হল, যদি আপনি যা করতে যাচ্ছেন তার সবই যদি নেটওয়ার্ক ব্যবহার করা হয় (তবে নীচে "তবুও আরও জটিলতা" দেখুন)।

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

সুতরাং, পাই দিকে, আপনি স্পষ্টভাবে এইভাবে কনফিগার করা পালসওডিও সার্ভার প্রক্রিয়া শুরু এবং থামাতে হবে:

/etc/pulse/daemon.conf

# See man pulse-daemon.conf
log-level = info
exit-idle-time = 10800 # 3 hours

exit-idle-timeডেমনকে অনির্দিষ্টকালের জন্য চলতে রাখতে আপনি -1 ব্যবহার করতে পারেন । এটি কয়েক সেকেন্ড এবং ডিফল্ট 20 হ'ল সতর্কতা অবলম্বন করুন (এটি যদি আপনি সেট না করেন তবে এটি "রহস্যজনকভাবে" মারা যাবেন))

/etc/pulse/default.pa

# See man default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.2.0/24
load-module module-alsa-sink device=hw:0,0

যেহেতু এটি একটি নেটওয়ার্ক অ্যাপ্লিকেশন, তাই এটি মূল হিসাবে চালানো ভাল ধারণা নয়। তবে, যেমনটি উল্লেখ করা হয়েছে man pulseaudio, প্রক্রিয়াটিকে একটি উচ্চ অগ্রাধিকার দেওয়ার জন্য "পুনর্নিবিষ্ট" করা ভাল ধারণা। আপনি এটি দিয়ে ম্যানুয়ালি এটি করতে পারেন nice, তবে পালসৌদিও এটি মূলের জন্য বা pulse-rtগোষ্ঠীর সদস্যদের জন্য এটি স্বয়ংক্রিয়ভাবে করবে , যদি এক্সিকিউটেবলটি "সেটুয়েড" হয়, যার অর্থ এটি কিছু রুট প্রিভিলেজ ব্যবহার করতে পারে এবং তারপরে সঠিক অবিকল্পিত ইউডে পরিবর্তন করতে পারে ( pingএবং passwdএছাড়াও এটি করা প্রয়োজন)। সুতরাং (মূল হিসাবে, বা sudo):

chmod u+s /usr/bin/pulseaudio

pulse-rtরাস্পবিয়ান-তে যখন পালসিউডিও ইনস্টল করা হয় তখন কোনও গ্রুপ তৈরি হয় না , তারপরে:

groupadd pulse-rt

এটি আপনাকে ১০০৩ এর মতো একটি গ্রিড দেবে that গোষ্ঠীটিতে (যেমন) ব্যবহারকারী পাই যুক্ত করুন:

usermod -aG pulse-rt pi

তবে রাস্পবিয়ান-তে আপনি এখনও পাই হিসাবে রিনিস করতে পারবেন না। তার জন্য, এতে যুক্ত করুন /etc/security/limits.conf:

@pulse-rt       hard nice -20
@pulse-rt       soft nice -20

এই পরিবর্তনগুলি হওয়ার আগে আপনাকে আসলে একটি লগ ইন করতে হবে; যদি আপনি পাই এর সাথে এসএসএস ব্যবহার করেন তবে কেবল ব্যবহার করুন login। এখন আপনি পালসওদিও শুরু করতে পারেন এবং এটি নিজেই পুনর্নির্ধারণ করবে -11, যা সম্ভবত অন্যান্য প্রক্রিয়াগুলির তুলনায় উচ্চতর অগ্রাধিকার (এনআইএসির মানটি দেখুন top)।

নেটওয়ার্ক থেকে প্রবাহিত শব্দ বাজানোর সময়, পাইতে থাকা পালসোডিওগুলি প্রায় 10% সিপিইউ এবং একটি ক্ষুদ্র পরিমাণের মেমরি ব্যবহার করে। :) এটি এবং আমার ডেস্কটপ একটি তারযুক্ত ল্যানে রয়েছে; ডালটি কাঁচা পিসিএম ডেটা প্রবাহিত করে (আমি বিশ্বাস করি), তাই ব্যান্ডউইথের ব্যবহার উত্সের নমুনা হারের সাথে সামঞ্জস্য করে, 1 কেবি / এস এবং তার বেশি। দুর্ভাগ্যক্রমে, আপনি যদি ভিডিওটি দেখছেন তবে শব্দটিতে একটি লক্ষণীয় পিছনে রয়েছে।

তবু আরও জটিলতা ...

দুর্ভাগ্যক্রমে, আমার পিসি থেকে পাওয়া বিভিন্ন সাউন্ড অ্যাপ্লিকেশনগুলির কোনওই এখনই কাজ করেনি; mpg123মোটেও চালাতে হবে না। তার জন্য, ফেডোরায় আপনার mpg123-plugins-pulseaudioপ্যাকেজটি দরকার । ব্রাউজারে ফ্ল্যাশ স্টাফগুলির জন্য (যেমন, ইউটিউড) আপনার প্রয়োজন alsa-plugins-pulseaudio(এগুলি আসলে দূরবর্তী সার্ভারের সাথে সংযোগ স্থাপন করে)) অন্যান্য ডিস্ট্রোদের একযোগে প্যাকেজ থাকা উচিত। আপনি যদি আগে পলসৌদিও ব্যবহার করে থাকেন (আমি ছিলাম না) তবে আপনি সেগুলি ইতিমধ্যে ইনস্টল করে থাকতে পারেন।

কেডিএর ডেস্কটপ বেল এবং হুইসেলগুলিও কাজ করে না not এটি সমাধান করা একটি কঠিন সমস্যা, কারণ এটি একটি স্থানীয় পালসৌডিও সার্ভারের সন্ধান করে এবং যেমন বর্ণিত হয়েছে, সরাসরি সংযোগ ব্যবহার করার অর্থ স্থানীয়ভাবে কোনও সার্ভার চালানো যায় না। এর চারপাশের উপায়টি হল "টানেল" পদ্ধতিটি ব্যবহার করা।

মডিউল-সুড়ঙ্গ-বেসিনে

এটি পলসৌদিও ডক্সে উল্লিখিত অন্য উপায়ে। এই ক্ষেত্রে, আপনার উভয় দিকে একটি সার্ভার চলছে এবং অন্যদিকে একটি হাত বন্ধ রয়েছে। এটি করতে, "ডিফল্ট-সার্ভার" এর মধ্যে মন্তব্য /etc/client.confকরুন এবং এতে একটি স্থানীয় যুক্ত করুন /etc/default.pa:

load-module module-tunnel-sink sink_name=rpi_tunnel server=tcp:192.168.2.13:4713 sink=bcm1

আপনি যদি এটি না রাখেন তবে sink_nameপালসওদিও শুরু হবে না। sinkPi পাশ, যা একটি নাম দরকার উপর বেসিনে নাম বোঝায়; একটি অনুরূপ যোগ sink_nameকরার module-alsa-sinkলাইন default.paসেখানে:

load-module module-alsa-sink device=hw:0,0 sink_name=bcm1 

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

আমি কে ডি কে পছন্দ করি তবে ব্লিপস ছাড়া বাঁচতে পারি, তাই আপাতত আমি সরাসরি সংযোগ দিয়ে যাচ্ছি।

সমস্যা সমাধান

আপনার যদি সমস্যা pulseaudio -vvvv --log-level=debugহয় তবে পাই ব্যবহার করে প্রচুর ডিবাগিং বার্তা সরবরাহ করা হয়। প্রাথমিকভাবে যখন আমি পাইয়ের উপর শব্দ পেতে পারি না তখন এই সমস্যাটি "ALSA বিসিএম 2835 ড্রাইভারের সাথে সম্পর্কিত একটি বাগের সাথে সম্পর্কিত" বলেছিল যা আমার কাছে অদ্ভুত বলে মনে হয়েছিল যেহেতু শব্দটি ঠিক আলসার সাথে ভাল ছিল, এবং আমি নিশ্চিত যে পাই পাই সফ্টওয়্যারটি আশেপাশে রয়েছে পালসওডিওতে - apt-get remove pulseaudioএবং একটি পুনরায় ইনস্টল apt-get install pulseaudioকরা এটি ঠিক করেছিল বলে মনে হচ্ছে ... এমন কোনও সমাধান আমি দেখতে চাই না তবে ওহে, কমপক্ষে এখন আমি প্রতিটি বাক্সে স্পিকার লাগিয়ে না রেখে টিশ শুনতে পারি। অধিকাংশ ক্ষেত্রে.


বিস্তৃত উত্তরের জন্য ধন্যবাদ। যদিও একটি প্রশ্ন: সরাসরি পাই থেকে অডিও আসার সাথে কী ঘটে?
ভিনসেন্ট

ডান্নো যদি আমি কখনও চেষ্টা করে থাকি (আমি এটি আর করব না) তবে পালসওদিওকে মাল্টিপ্লেক্সার বলে মনে করা হয়, তাই এটি কাজ করা উচিত।
স্বর্ণিলকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.