Audio-Cd

ioctl CDROMPLAYMSF 命令究竟做了什麼?

  • July 5, 2019

我有一個 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

CDROMPLAYMSFioctl 發出這些 SCSI 命令之一,即PLAY AUDIO MSF. MSF 定義 CD 上的位置(以分鐘、秒、幀為單位)。

內部 CD ROM 早已失去此功能,外部 USB CD ROM 也是如此(沒有模擬音頻連接到主機板)。所以你的 CD 播放器理所當然地忽略了這個命令。

IIRClibcdaudio庫還具有從 CD 讀取數字數據的功能。您需要使用這些,然後將數據傳遞給 Pulseaudio 等以播放 CD。

你也可以使用現成的命令行工具mplayer cdda://

引用自:https://unix.stackexchange.com/questions/523773