ฉันเห็นเครือข่ายอ้างว่าแจ็คเร็วกว่า Pulse และมีความหน่วงน้อยกว่า เป็นเช่นนั้นได้อย่างไร ทำไม Pulse ถึงเรียกตัวเองว่าเบาและพวกแจ็คเรียกมันว่าอ้วน? ทุกคนสามารถทำลาย internals ของ daemons ทั้งสองนี้ให้เป็นคนธรรมดาได้หรือไม่?
ฉันเห็นเครือข่ายอ้างว่าแจ็คเร็วกว่า Pulse และมีความหน่วงน้อยกว่า เป็นเช่นนั้นได้อย่างไร ทำไม Pulse ถึงเรียกตัวเองว่าเบาและพวกแจ็คเรียกมันว่าอ้วน? ทุกคนสามารถทำลาย internals ของ daemons ทั้งสองนี้ให้เป็นคนธรรมดาได้หรือไม่?
คำตอบ:
แจ็คต้องการให้คุณ - ผู้ใช้ที่มีความรู้ - เพื่อกำหนดค่าเซิร์ฟเวอร์เพื่อกำหนดเวลาประมวลผลแฝงที่เป็นไปได้ต่ำที่สุดสำหรับเครื่องของคุณ (เวลาแฝงในการประมวลผลคือเวลาที่เซิร์ฟเวอร์ใช้ในการย้ายข้อมูลไปยัง / จากแอปพลิเคชันไคลเอนต์จากนั้นส่ง / รับ "ตัวอย่าง" ของตัวอย่างเสียงนอกระบบถัดไป) แจ็คจะส่งข้อมูลเสียงเหล่านั้นตรงเวลาหรือ มันจะล้มเหลวและให้บัฟเฟอร์แก่คุณ (บางครั้งเรียกว่า "dropout" หรือpopsและคลิก) หากแจ็คประสบความสำเร็จอย่างต่อเนื่องคุณควรเริ่มต้นเซิร์ฟเวอร์ใหม่ด้วยการตั้งค่าที่แตกต่างกันหรือเปลี่ยนแปลงบางอย่างในแอปพลิเคชันไคลเอนต์เพื่อให้มีประสิทธิภาพมากขึ้น เนื่องจากการตั้งค่าเซิร์ฟเวอร์ของคุณใช้กับลูกค้าทุกคนอย่างสม่ำเสมอแจ็คจึงค่อนข้างมีประโยชน์สำหรับการกำหนดเส้นทางเสียงในแอปพลิเคชั่นเสียงหลายรายการและรับผลลัพธ์ที่สามารถคาดการณ์ได้ (นั่นคือมันเหมือนกับการเสียบ "แจ็ค" เข้ากับส่วนประกอบเสียงต่างๆ)
Pulse ถูกออกแบบมาเพื่อลดจำนวนครั้งที่เสียงจะลดลงเนื่องจากเซิร์ฟเวอร์ไม่ตรงตามกำหนดเวลาในการส่ง / รับเสียงนอกระบบ เห็นได้ชัดว่าพยายามทำสิ่งนี้โดยเลือกบัฟเฟอร์ขนาดใหญ่สำหรับแอปพลิเคชันไคลเอนต์ซึ่งไม่ได้ร้องขอเวลาในการประมวลผลต่ำดังนั้นจากนั้นตัวอย่าง "ฉีด" ลงในบัฟเฟอร์นั้นสำหรับแอปพลิเคชันไคลเอนต์ที่มีกำหนดส่งเร็วกว่า หากมันพยายามที่จะทำการฉีดตัวอย่างในไม่ช้ามันก็จะถึงกำหนดส่งและทำให้เกิด underrun Pulse จะเพิ่มระยะเวลาที่สั้นที่สุดโดยอัตโนมัติเพื่อให้ไคลเอนต์ส่งการอัพเดตเสียงไปยังเซิร์ฟเวอร์ เอกสารชีพจรอย่างชัดเจนรัฐที่พิเศษต่ำ latency-- พูดน้อยกว่า 10ms ของความล่าช้าในการประมวลผล- ไม่ใช่เป้าหมายการออกแบบ เนื่องจาก Linux เอง (และอาจเป็นฮาร์ดแวร์ของคุณ) ไม่ได้ออกแบบมาสำหรับการจัดตารางเวลาเสียงแบบเรียลไทม์ฉันจึงควรเชื่อพวกเขา
ในแง่ของการกำหนดค่าผู้ใช้ Pulse คือ "แสง" (บางคนอาจบอกว่า Pulse มีความล่าช้าในการกำหนดค่าต่ำซึ่งเป็นสิ่งที่น่าเสียดายที่หลาย ๆ แอพพลิเคชั่น Linux Audio ไม่สนใจ) ในแง่ของความซับซ้อนพื้นฐานเมื่อเทียบกับแจ็ค Pulse คือ "อ้วน"
เพื่อให้ได้คำตอบที่ชัดเจนยิ่งขึ้นคุณจะต้องได้รับอุปกรณ์ลูปแบ็คและวัดเวลาแฝงไปกลับในระบบของคุณเพื่อรู้ความจริง เวลาในการตอบกลับคือเวลาที่ระบบของคุณใช้ในการประมวลผลเสียงและรับสิ่งที่ประมวลผลกลับเข้าสู่ระบบ มีบทเรียนออนไลน์ที่อธิบายวิธีการทำเช่นนี้ภายใต้ลินุกซ์ นั่นจะทำให้คุณทราบถึงสิ่งที่คุณเป็นจริงหลังจากนั้นซึ่งเป็นเวลาแฝงที่รับรู้ - เวลาที่ใช้ตั้งแต่วินาทีที่คุณเริ่มกิจกรรม (เช่นการเดินสายสตริงกีตาร์) จนถึงช่วงที่คุณได้ยินเสียงครั้งแรก ผลลัพธ์นั้น (เช่นการได้ยินเสียงคอร์ดกีตาร์)
ในที่สุดโปรดทราบว่า Pulse และ Jack ทั้งสองนั่งอยู่ด้านบนของ ALSA ในการกระจาย GNU / Linux ส่วนใหญ่ ฉันรู้ว่าคุณแค่ถามเกี่ยวกับแจ็คกับพัลส์ แต่ถ้าคุณกำลังใช้แอปพลิเคชั่นเสียงเดียวที่สามารถเชื่อมต่อโดยตรงกับ ALSA ได้ไม่มีวิธีที่เป็นไปได้ที่การเพิ่ม Pulse หรือ Jack จะทำให้คุณรับรู้เวลาแฝงที่ต่ำกว่า ALSA เพียงอย่างเดียว ในแง่นี้ Pulse และ Jack เป็น "อ้วน"
TLDR; ALSA เพียงอย่างเดียวนั้นเร็วที่สุดแจ็คมีประโยชน์สำหรับการเชื่อมโยงแอปพลิเคชั่นเสียงหลายรายการเข้าด้วยกันและ Pulse น่าจะใช้งานได้ง่ายที่สุดเมื่อคุณไม่สนใจเวลาแฝงที่ต่ำมาก เพิกเฉยเอกสารหรือการสนทนาที่ใช้คำแฝงโดยไม่ต้องอธิบายความล่าช้าประเภทใดที่มีความหมาย (น่าเสียดายที่ทั้งแจ็คเอกสารอย่างเป็นทางการและบล็อกของ Lennart เกี่ยวกับ Pulse อยู่ในหมวดหมู่นี้)
หมายเหตุ : อาจมีกรณีขอบที่คุณต้องการใช้แอปพลิเคชั่นเสียงเดียวและมันมีอินเตอร์เฟส ALSA crummy และอินเตอร์เฟสแจ็คที่เหมาะสม ในกรณีนั้นการใช้แจ็คอาจทำให้คุณมีเวลาในการตอบสนองที่ต่ำกว่า แต่ถ้าเรากำลังพูดถึงแอพที่ออกแบบมาเพื่อลดเวลาแฝงกรณีเหล่านี้น่าจะหายาก แต่ขออุปกรณ์ลูปแบ็คและทดสอบสมมติฐานของฉัน!
พวกเขาเป็นจริงที่คล้ายกันในการเป็นเซิร์ฟเวอร์เสียง JACKได้รับการออกแบบสำหรับการตอบสนองแบบเรียลไทม์ / ความหน่วงต่ำซึ่งจำเป็นสำหรับโซลูชันระบบเสียงระดับมืออาชีพ PulseAudio ได้รับการกำหนดเป้าหมายมากขึ้นที่เดสก์ท็อปทั่วไป PAดูเหมือนจะหนักกว่าแจ็ค - การมีความซับซ้อนมากขึ้นจะทำให้ค่าใช้จ่ายมากขึ้น บน Linux ทั้งสองใช้ALSAสำหรับเอาต์พุตจริงในที่สุด ด้วย PA ข้อมูลจะถูกกำหนดเส้นทางจาก ALSA (เอาต์พุตของแอปพลิเคชัน) ไปยัง PA (กำลังประมวลผล) ไปยัง ALSA (เอาท์พุท) ซึ่งแน่นอนว่าช้ากว่าเส้นทาง JACK-ALSA ในทางกลับกันมันจะโปร่งใสสำหรับแอพพลิเคชั่นที่ไม่สามารถใช้งานได้จริงเพราะมันแสดงการ์ดเสียงเสมือนพร้อมอินเตอร์เฟส ALSA
ไม่ว่าในกรณีใด ๆ เว้นแต่คุณตั้งใจจะผลิตเพลงหรือไม่สามารถอยู่ได้โดยปราศจากการควบคุมระดับเสียงของแอปพลิเคชั่น (หรือส่งต่อเสียงไปยังเครื่องอื่นผ่านเครือข่าย) ALSA ธรรมดาจะทำงานได้ดีโดยไม่มีค่าใช้จ่ายน้อย ไดรเวอร์บางตัวสามารถทำการผสมฮาร์ดแวร์และแม้ว่าจะไม่ได้ ALSA สามารถผสมผ่านปลั๊กอิน (อาจจะไม่เร็วเท่า JACK แต่การใช้ "ปกติ" ควรใช้ได้)
แจ็คสำหรับแอพพลิเคชั่นที่ต้องการความหน่วงต่ำเช่นการแกะสลักด้วยเสียง / การสร้างสำหรับนักดนตรีผู้สร้างวิดีโอเป็นต้น
พัลส์สำหรับแอปพลิเคชันเดสก์ท็อปทั่วไป (อย่าคาดหวังความล่าช้าต่ำ)
alsa
และoss
เอาท์พุทAlsa userspace layer (ไม่ใช่ไดรเวอร์) ทำขั้นต่ำ (latacy ระหว่าง [*])
ในกรณีส่วนใหญ่ Pulse เป็นตัวเลือกที่ดีที่สุดสำหรับผู้ใช้เดสก์ท็อปทั่วไป แจ็คเป็นตัวเลือกที่ดีที่สุดสำหรับนักดนตรี ฯลฯ
มันไม่ใช่คำถามของ "vs" ในตอนแรกเราจะเห็นได้ว่าเป็น "เซิร์ฟเวอร์เสียง" ดังนั้นอาจสรุปได้ว่าเพียงต้องการเลือกระหว่างพวกเขา นั่นไม่ใช่กรณี ตัวอย่างเช่นกล้องวิดีโอและกล้อง FLIR ทั้งคู่เป็นกล้อง แต่อย่างใดอย่างหนึ่งไม่เพียง "เลือก" ระหว่างพวกเขา พวกเขารับใช้บทบาทที่แตกต่างกันมากบทบาทเหล่านั้นสามารถเป็นที่ชื่นชม แต่พวกเขาก็ไม่สามารถแข่งขันได้ หนึ่งต้องการแจ็คหรือต้องการพัลส์หรืออาจต้องการทั้งคู่ ตัวเลือกถูกขับเคลื่อนโดยโดเมนปัญหาไม่ใช่คุณลักษณะเฉพาะเช่นเวลาแฝงที่เฉพาะเจาะจง
สำหรับคำว่า "FAT" กับคำว่า "FAT" ไม่ได้ใช้คำนี้ในหลายวิธีที่จะมีความหมายอย่างแท้จริง แต่โดยทั่วไปคำว่า FAT จะใช้เมื่อแอปพลิเคชัน "ทำเพื่อคุณทั้งหมด" ไม่มากก็น้อย "น้ำหนักเบา" มีแนวโน้มที่คุณจะได้รับการโหลด fucntionallity ที่คุณต้องการอาจเลือกจากพาเลทของตัวเลือกและทิ้งส่วนที่เหลือ Pulse เป็นโปรแกรม "หยดใหญ่" ที่คุณให้พารามิเตอร์สองสามอันและค่อนข้างมาก ต้องการหรือไม่จำนวนฟังก์ชั่นทั้งหมดจะถูกโหลดเมื่อคุณเริ่มต้นการเต้นของชีพจร แจ็คมีขนาดเล็กและไม่มีประโยชน์ในตัวมันเองโปรแกรมที่คุณใช้ติดกับปลั๊กอินโปรแกรมและอื่น ๆ จำนวนมากเพื่อสร้างสิ่งที่คุณต้องการ โปรแกรมเมอร์มักจะมองโลกจากด้านข้างของทรัพยากรเครื่อง
ดังนั้นพัลส์เป็นเซิร์ฟเวอร์เวลาแฝงผันแปรและแจ็คได้รับการแก้ไขหนึ่งในเวลาแฝง นั่นคือโดเมนปัญหาเฉพาะของพวกเขา หากคุณเพียงแค่ดูทีวีหรือฟังเพลงผ่านเครือข่ายคุณก็ต้องการชีพจร หากคุณกำลังพยายามเล่นดนตรีอิเล็กทรอนิกส์สดคุณต้องมีแจ็ค หากคุณกำลังดูทีวีและทำการประมวลผลจำนวนมากบนสตรีมเสียงคุณจะต้องใช้ทั้งสองอย่างแน่นอน