cd
cd - SGI系统上的CD-ROM访问
自2.6版弃用:cd模块已在Python 3中删除。
该模块提供了Silicon Graphics CD库的接口。它仅适用于Silicon Graphics系统。
数据图书馆的工作方式如下。 一个程序用open()打开CD-ROM设备,并创建一个解析器,用createparser()解析CD中的数据。 open()返回的对象可用于从CD读取数据,也可用于获取CD-ROM设备的状态信息,并获取有关CD的信息,如目录。 CD中的数据被传递给解析器,该解析器解析帧,并调用之前添加的任何回调函数。
音频CD分为曲目
或节目
(这些术语可以互换使用)。曲目
可以细分为指标
。一张音乐CD包含一张表格,内容
中给出了CD上曲目
的开始。索引0通常是音轨开始之前的暂停。内容列表给出的曲目
开始通常是索引1的开始。
CD上的位置可以用两种方式表示。可以是帧数或三个值,分,秒和帧的元组。大多数功能都使用后者。位置既可以相对于CD的开始,也可以相对于轨道的开始。
模块cd
定义了以下功能和常量:
cd.createparser()
创建并返回一个不透明的解析器对象。解析器对象的方法如下所述。
cd.msftoframe(minutes, seconds, frames)
将(minutes, seconds, frames)
绝对时间码中的三倍时间转换为相应的CD帧编号。
cd.open([device[, mode]])
打开CD-ROM设备。 返回值是一个不透明的玩家对象; 玩家对象的方法如下所述。 该设备是SCSI设备文件的名称,例如 '/ dev / scsi / sc0d4l0'或None。 如果省略或无,则查阅硬件清单以找到CD-ROM驱动器。 如果不省略,模式应该是字符串'r'。
该模块定义了以下变量:
exception cd.error
各种错误引发异常。
cd.DATASIZE
一帧音频数据的大小。这是传递给类型回调的音频数据的大小audio
。
cd.BLOCKSIZE
一个未解释的音频数据帧的大小。
以下变量是由getstatus()返回的状态:
cd.READY
该驱动器已准备好用音频CD加载操作。
cd.NODISC
驱动器没有加载CD。
cd.CDROM
该驱动器装有一张CD-ROM。后续播放或读取操作将返回I / O错误。
cd.ERROR
尝试读取光盘或其目录时发生错误。
cd.PLAYING
驱动器处于CD播放器模式,通过其音频插孔播放音频CD。
cd.PAUSED
驱动器处于暂停播放的CD层模式。
cd.STILL
相当于PAUSED
较旧的(非3301)型号Toshiba CD-ROM驱动器。SGI从未运送过这种驱动器。
cd.audiocd.pnumcd.indexcd.ptimecd.atimecd.catalogcd.identcd.control
描述可由CD解析器对象的addcallback()方法设置的各种解析器回调的整型常量(见下文)。
1.Player对象
Player对象(返回open()
)有以下方法:
CD player.allowremoval()
解锁CD-ROM驱动器上的弹出按钮,允许用户在需要时弹出盒子。
CD player.bestreadsize()
返回用于该方法的num_frames
参数的最佳值readda()
。Best定义为允许从CD-ROM驱动器连续传输数据的值。
CD player.close()
释放与玩家对象相关的资源。调用close()
后该对象的方法不应再使用。
CD player.eject()
从CD-ROM驱动器中弹出盒子。
CD player.getstatus()
返回有关CD-ROM驱动器当前状态的信息。 返回的信息是具有以下值的元组:state,track,rtime,atime,ttime,first,last,scsi_audio,cur_block。 rtime是相对于当前曲目开始的时间; atime是相对于光盘开始的时间; ttime是光盘上的总时间。 有关这些值的含义的更多信息,请参阅手册页CDgetstatus(3dm)。 状态值为以下值之一:ERROR,NODISC,READY,PLAYING,PAUSED,STILL或CDROM。
CD player.gettrackinfo(track)
返回有关指定轨道的信息。返回的信息是一个由两个元素组成的元组,包括轨道的开始时间和轨道的持续时间。
CD player.msftoblock(min, sec, frame)
将代表绝对时间码时间的分钟,秒,帧三倍数转换为给定CD-ROM驱动器的相应逻辑块编号。 您应该使用msftoframe()而不是msftoblock()来比较时间。 逻辑块号与帧号相差一定的CD-ROM驱动器所需的偏移量。
CD player.play(start, play)
开始在指定轨道的CD-ROM驱动器中播放音频CD。 音频输出出现在CD-ROM驱动器的耳机和音频插孔(如果已安装)上。 播放停止在光盘的末尾。 开始是开始播放CD的轨道号; 如果播放为0,则CD将被设置为初始暂停状态。 方法togglepause()可以用来开始游戏。
CD player.playabs(minutes, seconds, frames, play)
正如play()
,除了开始是在几分钟,几秒钟和帧,而不是一个曲目号码。
CD player.playtrack(start, play)
正如play()
,除了在末尾停止。
CD player.playtrackabs(track, minutes, seconds, frames, play)
正如play()
,除了播放在指定的绝对时间开始,并在指定的轨道结束时结束。
CD player.preventremoval()
锁定CD-ROM驱动器上的弹出按钮,从而防止用户任意弹出盒子。
CD player.readda(num_frames)
从安装在CD-ROM驱动器中的音频CD中读取指定数量的帧。返回值是一个表示音频帧的字符串。该字符串可以不加改变地传递给parseframe()
解析器对象的方法。
CD player.seek(minutes, seconds, frames)
设置指示从CD-ROM读取数字音频数据的下一个起点的指针。指针设置为以分
,秒
和帧
指定的绝对时间码位置。返回值是指针已设置的逻辑块号。
CD player.seekblock(block)
设置指示从CD-ROM读取数字音频数据的下一个起点的指针。指针被设置为指定的逻辑块编号。返回值是指针已设置的逻辑块号。
CD player.seektrack(track)
设置指示从CD-ROM读取数字音频数据的下一个起点的指针。指针被设置为指定的轨道。返回值是指针已设置的逻辑块号。
CD player.stop()
停止当前的播放操作。
CD player.togglepause()
如果CD正在播放,则暂停CD,并在播放暂停时播放。
2.解析器对象
解析器对象(由createparser()返回)具有以下方法:
CD parser.addcallback(type, func, arg)
添加解析器的回调。 解析器对数字音频数据流中的八种不同类型的数据进行回调。 这些类型的常量在cd模块级别定义(参见上文)。 回调的调用方式如下:func(arg,type,data),其中arg是用户提供的参数,type是回调的特定类型,data是为这种回调返回的数据。 数据的类型取决于回调的类型,如下所示:
类型 | 值 |
---|---|
audio | 可以不加修改地传递给al.writesamps()的字符串。 |
pnum | 整数给出节目(曲目)号码。 |
index | 整数给出索引号。 |
ptime | Tuple组成的分钟,秒和帧的节目时间。 |
atime | 由分钟,秒和帧组成的绝对时间。 |
catalog | 给出CD的目录号的13个字符的字符串。 |
IDENT | 12个字符的字符串,给出记录的ISRC标识号。该字符串由两个国家代码字符,三个字符所有者代码,两个字符给出年份,以及五个字符给出序列号。 |
control | 整数给出来自CD子码数据的控制位 |
CD parser.deleteparser()
删除解析器并释放它正在使用的内存。此通话后不应使用该对象。这个调用在对象的最后一个引用被移除时自动完成。
CD parser.parseframe(frame)
从CD解析一个或多个数字音频数据帧,例如readda()返回的数字音频数据帧。 它确定数据中存在哪些子码。 如果这些子码自最后一帧以来发生了变化,那么parseframe()会执行一个适当类型的回调,将传递给它的帧中的子码数据传递给它。 与C函数不同,可以将多个数字音频数据帧传递给此方法。
CD parser.removecallback(type)
删除给定类型
的回调。
CD parser.resetparser()
将用于跟踪子代码的解析器的字段重置为初始状态。resetparser()
应在光盘更换后调用。