Audio-Cd
ioctl CDROMPLAYMSF 命令究竟做了什麼?
我有一個 USB 2.0 CD/DVD 驅動器,它(在其他案例中)用於播放音樂 CD。但是:驅動器似乎忽略了 CDROMPLAYMSF 命令。
主機是帶有目前版本 Raspbian 的 Raspberry Pi 3B。我正在使用
libcdaudio
音頻 CD 播放,這反過來會發出必要的ioctl
命令,包括 CDROMPLAYMSF。更新:
cd-drive
根據要求,我可以在此向您提供我的驅動器的規格,由以下實用程序吐出cdio
:CD-ROM drive supports MMC 3 Drive: /dev/cdrom Vendor : MATSHITA Model : CD-RW CW-8124 Revision : DA0D Hardware : CD-ROM or DVD Can eject : Yes Can close tray : Yes Can disable manual eject : Yes Can select juke-box disc : No Can set drive speed : No Can read multiple sessions (e.g. PhotoCD) : Yes Can hard reset device : Yes Reading.... Can read Mode 2 Form 1 : Yes Can read Mode 2 Form 2 : Yes Can read (S)VCD (i.e. Mode 2 Form 1/2) : Yes Can read C2 Errors : Yes Can read IRSC : Yes Can read Media Channel Number (or UPC) : Yes Can play audio : Yes Can read CD-DA : Yes Can read CD-R : Yes Can read CD-RW : Yes Can read DVD-ROM : Yes Writing.... Can write CD-RW : Yes Can write DVD-R : No Can write DVD-RAM : No Can write DVD-RW : No Can write DVD+RW : No
最初的 CD ROM 驅動器(在 IDE 時代)通過模擬音頻連接到主機板。然後,SCSI 命令
PLAY
、及其變體將音頻 CD 播放到此模擬輸出,就像獨立的 CD 播放器一樣。STOP``SCAN
CDROMPLAYMSF
ioctl 發出這些 SCSI 命令之一,即PLAY AUDIO MSF
. MSF 定義 CD 上的位置(以分鐘、秒、幀為單位)。內部 CD ROM 早已失去此功能,外部 USB CD ROM 也是如此(沒有模擬音頻連接到主機板)。所以你的 CD 播放器理所當然地忽略了這個命令。
IIRC
libcdaudio
庫還具有從 CD 讀取數字數據的功能。您需要使用這些,然後將數據傳遞給 Pulseaudio 等以播放 CD。你也可以使用現成的命令行工具
mplayer cdda://
。