ทำไม Linux ไม่ให้ฉันเล่นด้วย / dev / dsp


12

ฉันทำงานผ่านตำรา Linux และมันบอกฉันเกี่ยวกับอุปกรณ์ มันบอกว่าถ้าฉันส่งออกที่เหมาะสมไป/dev/dspแล้วมันจะเล่นเสียง ตัวอย่างคือcat file.wav > /dev/dspโดยที่ file.wav เป็นเพียงไฟล์. wav ใด ๆ

เมื่อฉันทำสิ่งนี้ฉันจะได้รับอนุญาตปฏิเสธ ถ้าฉันใช้สิ่งนี้ด้วย sudo ฉันยังคงได้รับอนุญาตปฏิเสธ ถ้าฉันsuแรกไม่มีเสียงเล่น

ทำไมฉันถึงได้รับอนุญาตปฏิเสธด้วยsudo? ทำไมไม่มีเสียงเล่นแม้จะมีsu?


1
ตรวจสอบให้แน่ใจว่าผู้ใช้ของคุณอยู่ในaudioกลุ่ม
Carl Groner

คุณอาจต้องตรวจสอบให้แน่ใจว่าไฟล์ wav ของคุณเป็นไฟล์เสียงดิบ - ไฟล์. wav ทั้งหมดไม่ใช่ไฟล์ดิบ
Drake Clarris

@DrakeClarris ที่จะทำให้เกิดเสียงรบกวนที่จะออกไม่ได้รับอนุญาตปฏิเสธข้อผิดพลาด
cjm

@cjm ฉันคิดถึงความเงียบมากขึ้นเมื่อเล่นโดยใช้ su
Drake Clarris

คำตอบ:


14

/dev/dspเป็นส่วนหนึ่งของ OSS ซึ่งไม่ได้เป็นส่วนหนึ่งของเคอร์เนล Linux ใน ... เป็นเวลานานมาก มันถูกแทนที่โดย ALSA มาเป็นเวลานานซึ่งใช้อุปกรณ์ที่แตกต่างกันโปรแกรมที่แตกต่างกันและ API ที่แตกต่างกัน

มีโมดูลเลเยอร์การจำลองแม้ว่า ถ้ามีการโหลดแล้วsnd-pcm-ossโมดูลจะช่วยให้คุณใช้อุปกรณ์ PCM /dev/dspสำหรับโอเอสเช่น

หรือเพียงแค่ติดตั้งกับท่อข้อมูลaplayหรือpaplayแทน


2
sudo modprobe snd-pcm-ossทำงานบน Ubuntu ของฉันเพื่อโหลดโมดูลนั้น ฉันได้รับ/dev/dsp1และ/dev/dsp2ออกจากนี้
Veda

9

ถ้าฉันใช้สิ่งนี้ด้วย sudo ฉันยังคงได้รับอนุญาตปฏิเสธ

โดยคำสั่งนี้ดูเหมือนว่าคุณกำลังพยายามคำสั่งเช่น:

sudo cat file.wav > /dev/dsp

เหตุผลที่คุณยังคงได้รับอนุญาต "ปฏิเสธ" คือว่าเปลือกของคุณครั้งแรกพยายามที่จะเปิด/dev/dspอุปกรณ์สำหรับการส่งออกก่อนที่จะใช้คำสั่ง (ซึ่งเป็นsudo) หากต้องการให้เชลล์เปิดการเปลี่ยนเส้นทางด้วยสิทธิ์ของรูทคุณจะต้องทำสิ่งต่อไปนี้

sudo sh -c 'cat file.wav > /dev/dsp'

6

หนังสือล้าสมัยตามที่ระบุไว้
ดังนั้นเพื่อให้ตัวอย่างทำงานกับ linux ที่ทันสมัยกว่าซึ่งมันบอกอะไรบางอย่าง

cat music.wav > /dev/dsp

เปลี่ยนเป็น:

cat music.wav | aplay

และคุณเพิ่งทำการย้ายรหัสครั้งแรก! ชนะ! รู้สึกอิสระที่จะส่งแพทช์ผู้เขียนหนังสือ :-)

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