问题标签 [cd-rom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
442 浏览

python-3.x - 有没有办法检查 cd 驱动器是否有带有 python 的 CD

我正在尝试制作一个程序来检查何时插入具有特定名称“PlayMe”的cd,然后让程序播放其中的一个曲目。计算机是带有raspbian的树莓派4。

我试过只扫描文件树何时出现,它工作一次,但是当磁盘被物理移除时它仍然有树。我也尝试过使用 pygame 的 cdrom 方法get_emptyget_name. 我不知道有更好的方法来做到这一点。

当它运行时,我从cdrom.get_countas 1 得到输出,但 get empty 给出:

“AttributeError:模块‘pygame.cdrom’没有属性‘get_empty’”

0 投票
1 回答
144 浏览

raspbian - 如何将 CD 音轨输入 ALSA 驱动的声音输出设备?

我正在使用没有内置声音解码器的 USB CD/DVD 驱动器,并通过 ALSA 控制它,它已经可以工作了。主机是带有当前 Raspbian 的 Raspberry Pi 3B。下面是对应的配置文件:

要从 CD-DA 读取音乐,我将使用CDIO++ 库。它的cd-info实用程序可以识别驱动器和音频 CD:

我已经有一些代码可以将 PCM 数据发送到声卡,并且对 CDIO API(文档记录很少)有一些见解(我知道该readSectors()方法用于从 CD 扇区一个扇区地读取声音数据),但不是关于如何正确地将数据从 CD-DA 输入传递到 ALSA 输出例程的真正线索。

请注意,这mplayer对我来说是禁止的,因为此例程将成为更大解决方案的一部分。

任何帮助将不胜感激。

更新:音频 CD(2,352 字节)和声音输出(910 字节,至少在我的特定情况下)的不同块大小是否重要?

0 投票
0 回答
52 浏览

c++ - 为什么我的程序运行时 cdrom 不能完全读取 cdrom?

我正在编写一个应该从 cdrom 读取文件并找到特定文件的程序。我订阅了WM_DEVICECHANGE,用于 CdRom 设备并获取DBT_CUSTOMEVENT, DBT_DEVICEARRIVAL, DBT_DEVICEREMOVECOMPLETE消息。

但是当我运行我的程序并插入 cdrom 时,我看不到磁盘内容,我看到类似的东西, 程序工作 当我停止调试 cdrom 内容更改为时它是错误的在此处输入图像描述 而且我不知道为什么会发生这种情况,当我调试我的程序时我注意到一个事实,在我插入磁盘后,我收到一条 DBT_DEVICEREMOVECOMPLETE 消息。我认为我的问题在于处理消息功能或打开的句柄,这不允许系统正确读取磁盘内容。谢谢你的帮助。

0 投票
0 回答
73 浏览

winapi - 您如何检测前/后间隙以计算 CD-ROM 中的确切轨道长度?

使用IOCTL_CDROM_READ_TOC_EX来计算 CD-ROM 轨道的确切长度的一种简单方法是假设音轨具有 2 秒的前间隙,而后跟不同轨道类型的数据轨道具有 2 秒的后间隙。

但不幸的是,情况并非总是如此,例如多区段光盘。

所以我想出了以下方法来计算每个轨道的确切长度:

  • 向后读取曲目的开头
  • 发出READ CD命令读取 Q 子通道
  • 只要INDEX电流TNO为零,我们就有效地处于前|后间隙区

这按预期工作,我们可以发现间隙以计算扇区中的确切轨道长度。

然而,这个主题在 SCSI 多媒体命令规范中没有解释,这有点令人惊讶!

问题:

这是计算 CD-ROM 中每个轨道的确切长度的正确方法吗?

0 投票
1 回答
190 浏览

windows - windows下ffmpeg libcdio输入设备

我想在 windows 下使用 ffmpeg 工具来 cd 东西,但是我无法提供工作 -i 参数(我的 CD 驱动器是 F:\;我试过 F:\ 和 F:\Track01.cda): [libcdio @ 043fe2a0] Could not open drive F:\ [libcdio @ 0635c2e0] Could not open drive F:\Track01.cda 有谁知道在带有libcdio的Windows下使用什么作为-i参数吗?

0 投票
1 回答
91 浏览

crc32 - 了解cdrom的crc32多项式

CDROM 数据使用使用 Reed-Solomon 的第 3 层错误检测和使用 32 位 CRC 多项式的 EDC。

ECMA 130标准将EDC CRC 多项式定义如下(第 16 页,第 14.3 页):

P(X) = (X^16 + x^15 + x^2 + 1).(x^16 + x^2 + x + 1)

首先使用数据字节的最低有效位。

通常,将多项式转换为其整数值形式非常简单。使用模数学,扩展多项式必须为P(X) = x^32 + x^31 + x^18 + x^17 + x^16 + x^15 + x^4 + x^3 + x^2 + x + 1,因此值为0x8007801F

最后一句意味着多项式是相反的(如果我理解正确的话)。

但到目前为止,我还没有设法获得正确的价值。Cdrtools源代码使用 0x08001801 作为多项式值。有人可以解释他们是如何找到这个价值的吗?

0 投票
0 回答
47 浏览

python - pygame 找不到第二个 CD 驱动器

执行此 python 代码(无论是 python 2 还是 3),连接 1 个内部 DVD 驱动器和一个外部 USB 驱动器。我可以从 linux 访问两个驱动器,但 pygame 只能找到内部驱动器。难道我做错了什么?

0 投票
1 回答
28 浏览

performance - 从 CDROM 读取缓慢

我希望这不是太离题,但发现了一个有趣的问题。我有一张要备份的旧 CD。如果使用 System Drag 'n' Drop 从新鲜的副本(将 CD 用于第一次驯服),cp或者rsync它只是挂起。

这些文件是视频文件。我可以在 VLC 中播放视频文件。如果我观看整个视频,我可以立即将视频文件复制到我的硬盘上。我假设 VLC 已将数据加载到硬盘驱动器中。

我用 Rust 写了一个简单的cp程序。它打开文件,并通过固定大小的缓冲区,将一个文件读入该缓冲区,然后将缓冲区写入另一个文件(基本上使用std::fs::copy,一个文件到另一个文件)。

我尝试调整缓冲区大小(据我所知,这是我唯一可以更改的)以合理的速度复制数据。到目前为止,我发现的最好的是 1 KiB 和 96 KiB 缓冲区。但是复制速度非常慢。没有什么比实时观看视频更好的了。

我的问题是:

  • 为什么会这样?
  • vlc 做了什么操作系统没有做的事情?
0 投票
1 回答
123 浏览

c++ - 使用 Win32 C++ 查找 CD ROM 驱动器在您的哪个驱动器上

我在我的 Win32 C++ 应用程序上创建了一个“弹出”按钮,当我按下它时,它会打开 CD ROM 托盘。现在我已经硬编码了,知道我电脑上的 D 驱动器是 CD ROM 驱动器。我的问题是,如果我不知道光驱是哪个驱动器,或者在光驱不是D盘的计算机上,如何确定光驱是我计算机上的哪个驱动器并打开光盘托盘?我的代码如下所示。

0 投票
1 回答
118 浏览

datasource - 有什么方法可以让 cloud-init 从硬盘本身获取数据源?

我在我们的产品中实现了 cloud-init 功能。我被指派在不使用 cd-rom 的情况下执行此操作(实际上仅来自硬盘本身)。那么有什么办法吗?