จะส่งสัญญาณเสียงไปยังแจ็คหูฟัง BOTH และ HDMI พร้อมกันได้อย่างไร


12

ฉันต้องการส่งสัญญาณเสียงผ่านทั้งช่องต่อ HDMI และช่องเสียบหูฟังขนาด 3.5 มม. พร้อมกัน ฉันไม่สามารถพบสิ่งใดในสิ่งนี้ เป็นไปได้ไหม


คุณต้องการที่จะเล่นเสียงที่เหมือนกันหรือสองกระแสเสียงที่แตกต่างกัน ?
tremby

คำตอบ:


7

ไม่ใช่คำตอบที่สมบูรณ์ แต่เป็นความคิดบางอย่างในเรื่องนั้น

ลองดูที่ด้านฮาร์ดแวร์: แผนงานน่าเสียดายที่ไม่เป็นประโยชน์สำหรับ Pi B + และไม่สามารถใช้กับ Pi2 ได้ดังนั้นเราจึงติดอยู่กับ B Rev 2.1 ที่นี่ในตอนนี้

เอาต์พุตเสียงของแจ็คหูฟังนั้นสร้างขึ้นโดย PWM ได้จาก GPIO ของ BCM2835 จะยึด 40 และ 45 ผ่านตัวกรอง RC Low-pass (ดูแผนงานหน้า 2)

เสียงบน HDMI ในทางกลับกันจะถูกส่งแบบดิจิทัล Wikipediaฯ : "สำหรับเสียงดิจิตอลหากอุปกรณ์ HDMI มีเสียงจำเป็นต้องใช้รูปแบบพื้นฐาน: สเตอริโอ (ไม่บีบอัด) PCM" และแน่นอนเสียงอะนาล็อกที่ใช้ PWM ก่อนหน้านี้ไม่ได้ป้อนเข้ากับตัวเชื่อมต่อ HDMI

ตอนนี้เราได้ตรวจสอบข่าวเก่าแล้ว: แจ็คหูฟังแบบอะนาล็อกกับดิจิตอล HDMI จากมุมมองของฉันทั้งสองควรได้รับการแก้ไขแยกต่างหากและเป็นอิสระด้วย (เสมือน) พร้อมกัน ตอนนี้PulseAudioควรสามารถสตรีมจากแหล่งหนึ่งไปยังฮาร์ดแวร์เสียงหลาย ๆ ชิ้น ฉันยังสงสัยว่าทำไมไม่มีอะไรให้ค้นหาบนเว็บเกี่ยวกับเรื่องนี้


ฉันยอมรับว่าพวกเขาควรจะแยกกันฉันถูกถามจากคนที่ฉันทำงานกับราสเบอร์รี่ปี่และพวกเขาขอให้ทำเช่นนี้ฉันอธิบายให้พวกเขาฟังว่าฉันไม่เชื่อว่ามันเป็นไปได้ แต่ฉันจะต้องตรวจสอบ กับคนอื่นที่รู้เรื่องนี้มากกว่าฉัน
Joker327

3

ฉันชอบที่จะทำสิ่งเดียวกันได้เช่นกัน อย่างน้อยฉันก็พยายามมีส่วนร่วมกับแนวโน้มนี้ด้วยแนวคิดบางอย่างที่หวังในการพัฒนาความร่วมมือในที่สุด

สิ่งที่เกิดขึ้นในใจของฉันคืออาจมี (และควร) เป็นสองโมดูลของโมดูลไดรเวอร์ที่โหลดในแบบคู่ขนานสำหรับแต่ละเส้นทางสัญญาณ อย่างไรก็ตามสิ่งนี้จะต้องใช้พารามิเตอร์ระดับโมดูลเคอร์เนลเช่นในตัวอย่างที่ดีที่สุดด้านล่างแต่ละอันสร้างอุปกรณ์ ALSA หนึ่งตัว (หมายเลข 0 สำหรับ HDMI และ 3 สำหรับหูฟังในตัวอย่าง) จากนั้นคุณสามารถส่งเสียงหนึ่งไปยังอีกเสียงหนึ่งไปยังอีกเสียงหนึ่ง (หรือคัดลอกไปที่ทั้งสอง)

พยายาม google สำหรับโมดูล snd_bcm2835 หน้าแรกซอร์สโค้ด (เพื่อประเมินความเป็นไปได้ของแพทช์ง่าย) แต่ไม่มีโชค (และเวลา) ดังนั้นฉันจึงยอมแพ้ในตอนนี้ หากมีคนค้นพบที่มาและมีส่วนร่วมในการเชื่อมโยงฉันจะดูอีกครั้ง

บันทึก !!! ต่อไปนี้เป็นตัวอย่างในอุดมคติของคำสั่งโหลดโมดูลเคอร์เนล ในซอฟต์แวร์ Raspberry Pi จริงไม่มีพารามิเตอร์ดังกล่าว (AFAIK)!

modprobe snd_bcm2835 out=hdmi alsa=0
modprobe snd_bcm2835 out=ear alsa=3

สวัสดีและยินดีต้อนรับ! ฉันยังสนใจที่จะให้สิ่งนี้ทำงานได้ดี (โดยสุจริตไม่มีการใช้ชีวิตจริงโดยเฉพาะ))
Ghanima
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.