在线文档教程

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 整数给出索引号。
ptimeTuple组成的分钟,秒和帧的节目时间。
atime由分钟,秒和帧组成的绝对时间。
catalog给出CD的目录号的13个字符的字符串。
IDENT12个字符的字符串,给出记录的ISRC标识号。该字符串由两个国家代码字符,三个字符所有者代码,两个字符给出年份,以及五个字符给出序列号。
control整数给出来自CD子码数据的控制位

CD parser.deleteparser()

删除解析器并释放它正在使用的内存。此通话后不应使用该对象。这个调用在对象的最后一个引用被移除时自动完成。

CD parser.parseframe(frame)

从CD解析一个或多个数字音频数据帧,例如readda()返回的数字音频数据帧。 它确定数据中存在哪些子码。 如果这些子码自最后一帧以来发生了变化,那么parseframe()会执行一个适当类型的回调,将传递给它的帧中的子码数据传递给它。 与C函数不同,可以将多个数字音频数据帧传递给此方法。

CD parser.removecallback(type)

删除给定类型 的回调。

CD parser.resetparser()

将用于跟踪子代码的解析器的字段重置为初始状态。resetparser()应在光盘更换后调用。