একযোগে একাধিক শব্দ ডিভাইসে অডিও আউটপুটিং


10

আমি চাইছি আমার রাসপি আমার বোর্ডে অডিও আউট পোর্টে অডিও এবং আমার ডিজিটাল আউট কার্ডে (একটি আই 2 এস হাইফাইবেরি ডিজি) প্রেরণ করবে। এটি ALSA দ্বারা সম্ভব হওয়া উচিত। আমার ড্রাইভার লোড হয়েছে এবং স্বতন্ত্রভাবে উভয় শব্দ ডিভাইসে প্রেরণ করতে পারে, তবে তাদের সংমিশ্রণটি ঠিক কাজ করছে না। এটি করার জন্য ব্যাখ্যা করে বেশ কয়েকটি পোস্ট রয়েছে তবে আমি আমার কনফিগারেশনটি কাজ করতে পারি না get

অ্যাপলে থেকে ত্রুটি:

Playing WAVE 'sin1000_48khz.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
aplay: set_params:1059: Broken configuration for this PCM: no configurations available

"অ্যাপলে-এল" এর আউটপুট

**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HifiBerry Digi HiFi wm8804-spdif-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

"অ্যাপলে-এল" এর আউটপুট

null
   Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=sndrpihifiberry
    snd_rpi_hifiberry_digi,
    Default Audio Device
sysdefault:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device`

/Etc/asound.conf এর সামগ্রীসমূহ

pcm.both {
    type route
    slave.pcm {
        type multi    
        slaves.a.pcm "hw:0,0"
        slaves.b.pcm "hw:1,0"
        slaves.a.channels 2
        slaves.b.channels 2

        bindings.0.slave a
        bindings.0.channel 0    
        bindings.1.slave a
        bindings.1.channel 1

        bindings.2.slave b
        bindings.2.channel 0
        bindings.3.slave b
        bindings.3.channel 1
    }

    ttable.0.0 1
    ttable.1.1 1

    ttable.0.2 1
    ttable.1.3 1
}

ctl.both {
    type hw
    card sndrpihifiberry
    device 0
}

pcm.hifiberry {
    type hw    
    card sndrpihifiberry
    device 0
}

ctl.hifiberry {
    type hw
    card sndrpihifiberry
    device 0
}

pcm.audioout {
    type hw
    card ALSA
    device 0
}

ctl.audioout {
    type hw
    card ALSA
    device 0
}

pcm.!default {
    type plug
    slave {
        pcm both
    }
}

#pcm.!default {    
#    type hw
#    card sndrpihifiberry
#    device 0
#}

ctl.!default {
    type hw
    card sndrpihifiberry
    device 0
}

আমার মনে হয় আপনার পালসওদিও দেখে নেওয়া উচিত। তবে আমি এখানে ভুল হতে পারি
গারবেন

3
আমি পালসওদিও দেখেছি। আমার অভিজ্ঞতা ছিল যে এটি মূলত কাজ করে না।
খ্রিস্টি

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

আমি কেবল পালসৌদিও কাজ করার চেষ্টা করার পরামর্শ দিতে পারি , কারণ এটি আপনি যা করতে চান ঠিক তা করতে সক্ষম (নেটওয়ার্কের অন্যান্য সাউন্ডকার্ডগুলিতে প্রসারিত সহ)।
আর্থলেলনে

আমি উপরে উল্লিখিত হিসাবে, আমি পুলসৌদিও কাজ পেয়েছিলাম। এটি প্রতিটি পৃথক ডিভাইসে সূক্ষ্মভাবে কাজ করে এবং আপনি একবারে একাধিক আউটপুটগুলিতে স্ট্রিম তৈরি করার চেষ্টা করলে ব্যর্থ হয়। আমি বিশ্বাস করি যে অপরাধী হিসাবে রাসপি আই 2 এস ড্রাইভারের মেমরি ম্যাপিংয়ের অভাব রয়েছে, তবে আরও ডিবাগিংয়ে মূলত ALSA এবং / অথবা পুলসৌদিওর অভ্যন্তরীণ কাঠামো শিখতে হবে, যা করার সময় বা ঝোঁক আমার নেই।
ক্রিস্টি

উত্তর:


1

এটি কিছুটা হ্যাকি তবে আপনি কি teeকমান্ডটি বিবেচনা করেছেন ? StackExchange আরও পড়ুন টী বর্ণের নাম পুনরায় দিক এবং উইকি দেখি আরো উদাহরণ জন্য নিবন্ধ। আমি ভাবছি যদি আপনার কাছে এমন একটি কমান্ড থাকে যা ফাইলের নাম বা মিডিয়া সামগ্রীর লিঙ্ককে আউটপুট করে, lsসম্ভবত, এবং teeআপনার পছন্দসই মিডিয়া প্লেয়ারকে কমান্ড কল করতে ব্যবহার করে। সমস্যাটির আশেপাশে আমি কীভাবে স্ক্রিপ্ট করব ...


#!/bin/bash
MediaPlayer="$1"
MediaOptions1="$2"
MediaOptions2="$3"
InputParcer="ls $4"
${InputParcer} | tee >(${MediaPlayer} ${MediaOptions1}) >(${MediaPlayer} ${MediaOptions2}) || echo 'Exiting baddly'

মন্তব্য:

উপরেরগুলিতে প্রতিটি আউট-পুট ফর্কিংয়ের জন্য পরিবেশন বিকল্পগুলি InputParcerথাকতে পারে এবং আপনি যদি একের অধিক মিডিয়া ফাইল যুক্ত ডিরেক্টরি বা ওয়েব লিঙ্ক জমা দেওয়ার পরিকল্পনা করেন তবে পরিবর্তনশীলটি সম্পাদনা করা উচিত। তবে একবারে একটি ফাইলের মধ্যে উভয়কেই আউটপুট দেওয়া উচিত যদি MediaOptions1/2 হয় হার্ড কোডড হয় বা প্রতিটি রান সেট করা থাকে। এটি কিছুটা হ্যাকি, আপনাকে সতর্ক করা হয়েছে।

... পরীক্ষার পরে এবং এর পরে আমি সম্ভবত if [ ${#} < 4]; then echo "error"; fiশীর্ষের কাছাকাছি টস করতে চাই ; 4কত আর্গুমেন্ট থাকার দরকার আছে তার জন্য সম্পাদনা করছি। যেমনটি চালানো bash scripted_dule_player 'aplay <common_options>' '<options_output1>' '<options_output2>' '</full/file/path/to/mediafile>'আপনার সিস্টেমে যে বিকল্পগুলি এবং ফাইল পাথগুলি চালানোর ইচ্ছে রয়েছে তা সংশোধন করা নিশ্চিত হবে; মধ্যে জিনিস <>

ব্যবহার সহ সমস্যাগুলি teeহ'ল এটি লিনাক্সের স্বাদগুলির মধ্যে খুব সারণী নয় এবং এটি আউটপুটগুলির মধ্যে সিঙ্কে অডিও না প্লে করার কারণ হতে পারে। পরিবর্তে আমি omxplayer -o bothদুটি পৃথক ডিভাইসে শব্দ আউটপুট দেওয়ার জন্য ব্যবহারের পরামর্শ দেব , তবে এটি কেবল একটি আরপিআইতে পরীক্ষা করা হয়েছে যা এইচডিএমআই এবং অডিও প্লাগ ইন করেছে, ওপি এবং ওপি দ্বারা ব্যবহৃত কোনও সেটআপ জন্য অনুরোধ করা হয়নি alsa

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

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