光盘驱动器
出自 维基百科
- 在计算机科学中,光盘驱动器 (ODD) 是一种磁盘驱动器,它使用激光或可见光谱内或附近的电磁波作为从光盘读取或写入数据的过程的一部分。有些驱动器只能从光盘读取数据,但最近的驱动器通常既是读取器又是记录器,也称为刻录机或写入器。光盘、DVD 和蓝光光盘是常见的光学介质类型,可以通过此类驱动器读取和记录。光盘驱动器是通用名称;驱动器通常被描述为“CD”、“DVD”或“蓝光”,后跟“驱动器”、“写入器”等。
刻录
光盘驱动器的刻录过程包括创建或获取镜像,并将其写入光学介质。镜像原则上可以是任何数据文件。如果要挂载生成的介质,那么它通常是 ISO 9660 文件系统镜像文件。音频和多媒体 CD 通常从 .bin 文件刻录,受 .toc 文件或 .cue 文件控制,这些文件指示所需的音轨布局。
安装刻录工具
如果要使用带有图形用户界面的程序,请按照 #使用 GUI 刻录 CD/DVD/BD 进行操作。
这里列出的程序是面向命令行的。它们是大多数免费 GUI 程序用于 CD、DVD 和 BD 的后端。GUI 用户在进行故障排除或刻录活动脚本编写时可能会用到它们。
您至少需要一个用于创建文件系统镜像的程序和一个能够将数据刻录到您所需介质类型的程序。
可用于创建 ISO 9660 镜像的程序有
传统选择是 mkisofs,因为它比较旧。
可用于刻录到介质的程序有
- cdrdao(1) 来自 cdrdao (仅限 CD,仅限 TOC/CUE/BIN)
- cdrecord(1) 来自 cdrtools
- cdrskin(1) 来自 libburn
- growisofs(1) 来自 dvd+rw-tools (仅限 DVD 和 BD)
- xorriso(1) 和 xorrecord(1) 来自 libisoburn
传统选择是 cdrecord 用于 CD,growisofs 用于 DVD 和蓝光光盘,因为 cdrecord 是第一个提供无需描述文件即可写入 CD 的程序,而 growisofs 是第一个提供无需刻录程序人为限制即可写入 DVD 和 BD 的程序。要将 TOC/CUE/BIN 文件写入 CD,请安装 cdrdao。
用于 CD、DVD 和 BD 刻录的免费 GUI 程序至少依赖于上述软件包之一。
xorrisofs 支持本文档中显示的 mkisofs 选项。
cdrskin 支持显示的 cdrecord 选项;xorrecord 也支持那些不处理音频 CD 的选项。
从现有文件创建 ISO 镜像
创建 ISO 镜像的最简单方法是首先将所需文件复制到一个目录,例如:./for_iso
。
然后使用 mkisofs 生成镜像文件
$ mkisofs -V "ARCHIVE_2013_07_27" -J -r -o isoimage.iso ./for_iso
这些选项中的每一个都在以下章节中进行了解释。
基本选项
-V
- 指定文件系统的名称(分配给)。ISO 9660 标准规范对 32 个字符的字符串长度施加了限制,并限制了允许的字符集:“A”到“Z”、“0”到“9”和“_”。如果介质是自动挂载的,则此卷标可能会显示为挂载点。
-J
- 启用 Joliet 扩展,该扩展分配特殊空间以 Unicode 格式存储文件名(每个文件最多 64 个 UTF-16 字符)。
-joliet-long
- 将 Joliet 表中文件名的最大长度从 64 个字符增加到 103 个 UTF-16 字符。不符合 Joliet 规范,并且不常用。
-r
- 启用 Rock Ridge 扩展,该扩展向镜像添加 POSIX 文件系统语义,包括支持 255 个字符的长文件名和 Unix 风格的文件权限。
-o
- 设置生成的 ISO 镜像的文件路径。
嫁接点
也可以让 mkisofs 从各种路径收集文件和目录
$ mkisofs -V "BACKUP_2013_07_27" -J -r -o backup_2013_07_27.iso \ -graft-points \ /photos=/home/user/photos \ /mail=/home/user/mail \ /photos/holidays=/home/user/holidays/photos
-graft-points
启用对 pathspecs 的识别,pathspecs 由 ISO 文件系统中的目标地址(例如 /photos
)和源地址(例如 /home/user/photos
)组成。两者之间用“=”字符分隔。
因此,此示例将目录 /home/user/photos
、/home/user/mail
和 /home/user/holidays/photos
分别放在 ISO 镜像中作为 /photos
、/mail
和 /photos/holidays
。
程序 mkisofs 和 xorrisofs 接受相同的选项。对于安全备份,请考虑使用带有 --for_backup
选项的 xorrisofs,该选项记录最终的 ACL 并为每个数据文件存储 MD5 校验和。
有关其选项的更多信息,请参阅 mkisofs(8) 和 xorrisofs(1) 的手册页。
挂载 ISO 镜像
如果要浏览 ISO 镜像的文件,可以挂载它。要挂载 ISO 镜像,我们可以使用
# mount -t iso9660 -o ro,loop /path/to/file.iso /mount-point
完成镜像检查后,不要忘记卸载镜像
# umount /mount-point
另请参阅 Mounting images as user 以了解如何在没有 root 权限的情况下挂载。
将 img/ccd 转换为 ISO 镜像
要转换 img
/ccd
镜像,可以使用 ccd2iso
$ ccd2iso ~/image.img ~/image.iso
了解光盘驱动器的名称
在本节的其余部分,假定您的刻录设备名称为 /dev/sr0
。
通过以下方式检查
$ cdrecord dev=/dev/sr0 -checkdrive
这应该报告驱动器的 Vendor_info
和 Identification
字段。
如果未找到驱动器,请检查是否存在任何 /dev/sr*
以及它们是否为您或您的组提供读/写权限 (wr-
)。如果不存在 /dev/sr*
,请尝试手动加载模块 sr_mod
。
读取 CD 或 DVD 的卷标
如果要获取介质的名称/标签,请使用 dd
$ dd if=/dev/sr0 bs=1 skip=32808 count=32
从 CD、DVD 或 BD 创建 ISO 镜像
为了仅从光盘复制实际数据,而不是填充它的空块,首先检索其块/扇区计数和大小(大多数情况下为 2048)
$ isosize -x /dev/sr0
sector count: 2041796, sector size: 2048
或者,另一种方式
$ isoinfo -d -i /dev/sr0 | awk '/block size|Volume size/'
Logical block size is: 2048 Volume size is: 2041796
/dev/sr0
替换为您的光盘驱动器设备名称。然后使用 dd 使用获得的值复制数据
$ dd if=/dev/sr0 of=discmage.iso bs=sector_size count=sector_count status=progress
如果原始介质是可引导的,则副本将是可引导的镜像。您可以将其用作虚拟机的伪 CD,或将其刻录到光盘介质上,然后该介质应变为可引导的。[1]
使用 dvdisaster 创建错误恢复数据
dvdisasterAUR 或 dvdisaster-unofficialAUR 是一种工具,可向光盘介质添加错误校正数据。此数据可以帮助从划伤或损坏的光盘中恢复内容。
1. 将 CD、DVD 或蓝光光盘插入光盘驱动器。
2. 确保未挂载光盘。您可以使用以下命令卸载它
sudo umount /dev/cdrom
3. 从命令行运行 dvdisaster 或在您的应用程序菜单中找到它。
4. 在 dvdisaster 界面中,选择 创建错误校正数据。
5. 从下拉菜单中选择光盘类型 (CD/DVD/BD)。
6. 单击 加载光盘 按钮以扫描光盘介质的内容。
7. dvdisaster 将分析光盘并显示其结构。
8. 选择错误恢复 (ECC) 文件的保存位置。
9. 设置错误校正级别。级别越高,恢复效果越好,但 ECC 文件大小也越大。
2. 单击 生成 开始创建错误校正数据。
10. 该过程可能需要几分钟,具体取决于光盘的大小。
11. 创建 ECC 文件后,dvdisaster 将提示您验证文件。
12. 保存原始光盘镜像 (ISO) 和 ECC 文件以供将来使用。
13. 建议将 ISO 和 ECC 文件存储在多个设备或云存储中,以实现最大安全性。
最佳结果提示
- 使用高质量的光盘创建备份。
- 将 ECC 文件与 ISO 镜像一起存储,以便于恢复。
- dvdisaster 可以与 ISO 文件结合使用,而无需原始光盘。
使用 dvdisaster 重建损坏的光盘
如果您的光盘被划伤或以其他方式损坏,dvdisaster 可以使用错误校正 (ECC) 文件帮助恢复丢失的数据。1. 将损坏的 CD、DVD 或蓝光光盘插入光盘驱动器。
2. 卸载光盘以避免冲突
sudo umount /dev/cdrom
3. 启动 dvdisaster
4. 在 dvdisaster 界面中,选择 扫描和修复 模式。
5. 通过从下拉菜单中选择驱动器或使用 加载光盘 按钮来加载损坏的光盘。
5. 单击 加载 ECC 以选择相应的错误校正文件(通常为 .ecc
),该文件在您首次刻录光盘时创建。
6. 确保 ECC 文件与光盘结构完全匹配。如果您没有匹配的 ECC 文件,则此方法将不起作用。
7. 单击 扫描 开始读取光盘并识别损坏的扇区。
8. dvdisaster 将显示光盘状态的可视化表示,显示良好、无法读取和已更正的扇区。
9. 扫描完成后,单击 修复 以使用 ECC 文件重建丢失或损坏的数据。10. 恢复的数据将写入新的 ISO 镜像文件。
11. 选择一个目标位置以保存重建的 ISO 镜像。示例:/home/user/recovered_disc.iso
12. 单击 **“保存”** 以完成该过程。
13. 挂载 ISO 以验证文件是否已成功恢复
sudo mount -o loop /home/user/recovered_disc.iso /mnt
14. 检查 /mnt
中的内容以确保数据完整性。
最佳结果提示
- 使用能够良好读取损坏光盘的可靠光盘驱动器。
- 确保 ECC 文件与您的 ISO 备份安全地存储在一起。
- 如果恢复失败,请清洁光盘并尝试再次扫描。
视频:https://www.youtube.com/watch?v=zolvCcxcN4g
擦除 CD-RW 和 DVD-RW
使用过的 CD-RW 介质需要先擦除,然后才能覆盖以前记录的数据。这是通过以下方式完成的
$ cdrecord -v dev=/dev/sr0 blank=fast
有两种空白选项:blank=fast
和 blank=all
。完全空白的时间与完整写入运行的时间一样长。它会覆盖 CD 上的有效负载数据。尽管如此,这不应被视为安全地使这些数据无法读取。为此,建议使用随机数据进行多次完整写入运行。
替代命令是
$ cdrskin -v dev=/dev/sr0 blank=fast $ xorriso -outdev /dev/sr0 -blank as_needed
要擦除 DVD-RW,请使用 dvd+rw-tools 中的 dvd+rw-format 实用程序
$ dvd+rw-format -blank=fast /dev/sr0
替代命令是
$ cdrecord -v dev=/dev/sr0 blank=fast $ cdrskin -v dev=/dev/sr0 blank=deformat_sequential_quickest $ xorriso -outdev /dev/sr0 -blank deformat_quickest
这种快速空白的 DVD-RW 不适合多区段,并且不能接受长度不可预测的输入流。为此,必须使用以下方法之一
$ cdrecord -v dev=/dev/sr0 blank=all $ dvd+rw-format -blank=full /dev/sr0 $ cdrskin -v dev=/dev/sr0 blank=as_needed $ xorriso -outdev /dev/sr0 -blank as_needed
其他介质类型要么是写入一次(CD-R、DVD-R、DVD+R、BD-R),要么是可覆盖而无需擦除(DVD-RAM、DVD+RW、BD-RE)。
格式化 DVD-RW
格式化的 DVD-RW 介质无需事先擦除即可覆盖。因此,请考虑在其生命周期内应用一次
$ dvd+rw-format -force /dev/sr0 $ cdrskin -v dev=/dev/sr0 blank=format_if_needed $ xorriso -outdev /dev/sr0 -format as_needed
与 DVD-RAM、DVD+RW 和 BD-RE 不同,格式化的 DVD-RW 不能直接用作(慢速)硬盘,而是需要驱动程序 pktcdvd 的中介。请参阅 pktsetup(8)。
格式化 BD-RE 和 BD-R
BD-RE 在首次使用前需要格式化。当刻录程序检测到未格式化状态时,会自动执行此操作。尽管如此,有效负载区域的大小可能会受到上面针对 DVD-RW 显示的格式命令的专家版本的影响。
BD-R 可以未格式化或格式化使用。未格式化时,它们以全额定速度写入并提供最大存储容量。格式化后,它们在写入操作期间进行 checkread,坏块被备用区域中的块替换。这会将写入速度降低到额定速度的一半或更低。默认大小的备用区域将存储容量减少 768 MiB。
growisofs 默认格式化 BD-R。其他程序则不格式化。可以阻止 growisofs 进行格式化。cdrskin 和 xorriso 可以以全额定速度在格式化的 BD-RE 或 BD-R 上写入
$ growisofs -use-the-force-luke=spare:none ...growisofs.or.mkisofs.options... $ cdrskin stream_recording=on ...cdrecord.options... $ xorriso -stream_recording on ...xorriso.commands...
将 ISO 镜像刻录到 CD、DVD 或 BD
要将准备好的 ISO 镜像文件 isoimage.iso
刻录到光盘介质上,请为 CD 运行
$ cdrecord -v -sao dev=/dev/sr0 isoimage.iso
以及为 DVD 或 BD 运行
$ growisofs -dvd-compat -Z /dev/sr0=isoimage.iso
以及为 CD、DVD 或 BD 运行
$ xorriso -as cdrecord -v -sao dev=/dev/sr0 isoimage.iso
- 开始写入介质时,请确保未挂载介质。如果介质包含可读的文件系统,则可能会自动挂载。在最好的情况下,这将阻止刻录程序使用刻录设备。在最坏的情况下,由于读取操作干扰了驱动器,将会发生刻录错误。因此,如有疑问,请执行
# umount /dev/sr0
- growisofs 在空白 BD-R 介质上存在一个小错误。刻录完成后,它会发出错误消息。像 k3b 这样的程序然后会认为整个刻录运行失败。为防止这种情况,可以
- 在将空白 BD-R 提交给 growisofs 之前,先使用
dvd+rw-format /dev/sr0
格式化它 - 或使用 growisofs 选项
-use-the-force-luke=spare:none
- 在将空白 BD-R 提交给 growisofs 之前,先使用
验证刻录的 ISO 镜像
您可以验证刻录介质的完整性,以确保它不包含错误。在验证之前,务必弹出介质并重新插入。这将保证任何内核缓存都不会用于读取数据。
首先计算原始 ISO 镜像的 MD5 校验和
$ md5sum isoimage.iso
e5643e18e05f5646046bb2e4236986d8 isoimage.iso
接下来计算介质上 ISO 文件系统的 MD5 校验和。虽然某些介质类型传递的数据量与提交给刻录程序的数据量完全相同,但许多其他介质类型在读取时会附加尾部垃圾。因此,您应将读取限制为 ISO 镜像文件的大小。
$ blocks=$(expr $(du -b isoimage.iso | awk '{print $1}') / 2048)
$ dd if=/dev/sr0 bs=2048 count=$blocks | md5sum
43992+0 records in 43992+0 records out 90095616 bytes (90 MB, 86 MiB) copied, 0.359539 s, 251 MB/s e5643e18e05f5646046bb2e4236986d8 -
两次运行都应产生相同的 MD5 校验和(此处:e5643e18e05f5646046bb2e4236986d8
)。如果它们不相同,您也可能会从 dd
运行中收到 I/O 错误消息。如果您有兴趣,dmesg 可能会告诉您有关 SCSI 错误和块号的信息。
ISO 9660 和即时刻录
在将新兴的 ISO 文件系统写入光盘介质之前,没有必要将其存储在硬盘上。只有非常旧的计算机中的非常旧的 CD 驱动器才可能由于驱动器缓冲区为空而导致刻录失败。
如果从 mkisofs 中省略选项 -o
,则它会将 ISO 镜像写入标准输出。这可以管道传输到刻录程序的标准输入。
$ mkisofs -V "ARCHIVE_2013_07_27" -J -r ./for_iso | \ cdrecord -v dev=/dev/sr0 -waiti -
选项 -waiti
在这里不是真正需要的。它可以防止 cdrecord 在 mkisofs 开始输出之前写入介质。这将允许 mkisofs 读取介质,而不会干扰已开始的刻录运行。请参阅下一节关于多区段的内容。
在 DVD 和 BD 上,您可以让 growisofs 为您操作 mkisofs 并即时刻录其输出
$ growisofs -Z /dev/sr0 -V "ARCHIVE_2013_07_27" -r -J ./for_iso
多区段
ISO 9660 多区段意味着具有可读文件系统的介质在其第一个未使用的块地址仍然可写,并且新的 ISO 目录树将被写入此未使用的部分。新树附带有新添加或覆盖的数据文件的内容块。数据文件的块(应与旧 ISO 树中的块保持一致)将不会再次写入。
Linux 和许多其他操作系统将在介质的最后一个区段中挂载目录树。这个最新的树通常也会显示较旧区段的文件。
使用 cdrecord 进行多区段刻录
如果使用了 cdrecord 选项 -multi
,则 CD-R 和 CD-RW 保持可写(又名“可追加”)
$ cdrecord -v -multi dev=/dev/sr0 isoimage.iso
然后可以查询介质以获取下一个区段的参数
$ m=$(cdrecord dev=/dev/sr0 -msinfo)
借助这些参数和驱动器中可读的介质,您可以生成附加的 ISO 区段
$ mkisofs -M /dev/sr0 -C "$m" \ -V "ARCHIVE_2013_07_28" -J -r -o session2.iso ./more_for_iso
最后将区段附加到介质并使其再次可追加
$ cdrecord -v -multi dev=/dev/sr0 session2.iso
程序 cdrskin 和 xorrecord 也对 DVD-R、DVD+R、BD-R 和未格式化的 DVD-RW 执行此操作。程序 cdrecord 至少对 DVD-R 和 DVD-RW 执行多区段刻录。当然,它们都对 CD-R 和 CD-RW 执行此操作。
大多数可重复使用的介质类型不记录可挂载内核可识别的区段历史记录。但是,使用 ISO 9660,即使在这些介质上也可以实现多区段效果。
growisofs 和 xorriso 可以做到这一点,并隐藏大部分复杂性。
使用 growisofs 进行多区段刻录
默认情况下,growisofs 使用 mkisofs 作为后端来创建 ISO 镜像,并将其大部分程序参数转发到 。请参阅上面 mkisofs 的示例。它禁止选项 -o
并弃用选项 -C
。默认情况下,它使用 mkisofs。您可以通过设置环境变量 MKISOFS
来指定使用其他兼容的后端程序之一
$ export MKISOFS="xorrisofs"
希望在光盘介质上开始新的 ISO 文件系统,可以通过选项 -Z
表示
$ growisofs -Z /dev/sr0 -V "ARCHIVE_2013_07_27" -r -J ./for_iso
希望将更多文件作为新区段附加到现有 ISO 文件系统,可以通过选项 -M
表示
$ growisofs -M /dev/sr0 -V "ARCHIVE_2013_07_28" -r -J ./more_for_iso
有关详细信息,请参阅 growisofs(1) 手册以及 mkisofs 和 xorrisofs 的手册。
使用 xorriso 进行多区段刻录
xorriso 从介质的空白状态了解开始新的 ISO 文件系统的愿望。因此,如果介质包含数据,则适合将其空白化。命令 -blank as_needed
适用于所有类型的可重复使用介质,甚至适用于硬盘上数据文件中的 ISO 镜像。如果应用于空白的写入一次介质,则不会导致错误。
$ xorriso -outdev /dev/sr0 -blank as_needed \ -volid "ARCHIVE_2013_07_27" -joliet on -add ./for_iso --
在非空白可写介质上,如果使用命令 -dev
而不是 -outdev
,则 xorriso 会附加新给定的光盘文件。当然,此处不应给出任何命令 -blank
$ xorriso -dev /dev/sr0 \ -volid "ARCHIVE_2013_07_28" -joliet on -add ./more_for_iso --
有关详细信息,请参阅 xorriso(1) 手册页,尤其是其示例。
BD 缺陷管理
BD-RE 和已格式化的 BD-R 媒体通常在启用缺陷管理的情况下写入。此功能在写入块仍然存储在驱动器缓冲区中时读取它们。如果读取质量不佳,这些块将被重新写入或重定向到备用区域,数据将被存储在替换块中。
这种校验读取会将写入速度降低到驱动器和 BD 媒体标称速度的一半甚至更低。有时情况更糟。大量使用备用区域会导致读取操作期间出现长时间延迟。因此,缺陷管理并非总是理想的。
cdrecord 不格式化 BD-R。但是,它没有办法阻止 BD-RE 媒体上的缺陷管理。
growisofs 默认格式化 BD-R。可以通过选项 -use-the-force-luke=spare:none
来阻止缺陷管理。但是,它没有办法阻止 BD-RE 媒体上的缺陷管理。
cdrskin、xorriso 和 xorrecord 默认不格式化 BD-R。它们分别使用 cdrskin blank=format_if_needed
、xorriso -format as_needed
和 xorrecord blank=format_overwrite
来格式化。这三个程序可以通过 cdrskin stream_recording=on
、xorriso -stream_recording on
和 xorrecord stream_recording=on
来禁用 BD-RE 和已格式化 BD-R 的缺陷管理。
刻录音频 CD
创建您的音轨,并将它们存储为未压缩的 16 位、44100 赫兹、立体声 WAV 文件。要将 MP3 转换为 WAV,请确保已安装 lame,*cd* 到包含 MP3 文件的目录,并运行
$ for FILE in *.mp3; do lame --decode "$FILE" "${FILE%.mp3}.wav"; done
如果在尝试刻录使用 LAME 转换的 WAV 文件时遇到错误,请尝试使用 mpg123 解码
$ for FILE in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w "${FILE%.mp3}.wav" "$FILE"; done
要将 AAC 转换为 WAV,请确保已安装 faad2 并运行
$ for FILE in *.m4a; do faad "$FILE"; done
要修复现有 WAV 文件(或许多其他格式)的比特率,请尝试使用 sox
$ for FILE in *.wav; do sox "$FILE" -c 2 -r 44100 "${FILE%.wav}-ok.wav"; done
以一种方式命名音频文件,使其在按字母顺序排列时以所需的曲目顺序列出,例如 01.wav
、02.wav
、03.wav
等。
使用 cdrtools,使用以下命令模拟将 WAV 文件刻录为音频 CD
$ cdrecord -dummy -v -pad speed=X dev=/dev/sr0 -dao -swab *.wav
如果一切正常,您可以删除 -dummy
标志来实际刻录 CD。
-audio
标志。或者,使用 cdrdao,使用以下命令创建一个“目录”文件
$ { echo "CD_DA" printf 'TRACK AUDIO\nFILE "%s" 0\n' *.wav } > toc
这将使曲目之间没有间隙。可选地,如果您想在某些曲目之间插入 X 秒的间隙,您可以编辑 toc 文件,并在该曲目的 TRACK AUDIO 和 FILE 行之间插入以下行
PREGAP 00:0X:00
然后,我们刻录 CD
$ cdrdao write --speed X toc
可以调整速度,较低的速度会产生更高的质量结果。这是因为音频 CD 格式的纠错能力不如数据存储格式先进。
要测试新的音频 CD,请使用 MPlayer
$ mplayer cdda://
刻录 BIN/CUE
要刻录 BIN/CUE 镜像,请运行
$ cdrdao write --device /dev/sr0 image.cue
混合模式光盘的 TOC/CUE/BIN
ISO 镜像仅存储单个数据轨道。如果您想创建混合模式光盘(带有多个音轨的数据轨道)的镜像,则需要制作 TOC/BIN 对
$ cdrdao read-cd --read-raw --datafile image.bin --driver generic-mmc:0x20000 --device /dev/cdrom image.toc
某些软件只喜欢 CUE/BIN 对,您可以使用 *toc2cue*(cdrdao 的一部分)制作 CUE 文件
$ toc2cue image.toc image.cue
刻录后端问题
如果您遇到问题,可以在邮件列表 cdwrite@other.debian.org 寻求建议,或者尝试写信给程序手册页末尾列出的支持邮件地址之一。
请告知您尝试过的命令行、介质类型(例如 CD-R、DVD+RW 等)以及失败的症状(程序消息、用户期望落空等)。您可能会被要求获取受影响程序的最新发布版或开发版本并进行测试运行。但答案也可能是您的驱动器不喜欢特定的介质。
使用 GUI 刻录 CD/DVD/BD
有几个应用程序可在图形环境下刻录 CD。
另请参阅 Wikipedia:光盘制作软件比较。
- AcetoneISO — 多合一 ISO 工具(支持 BIN、MDF、NRG、IMG、DAA、DMG、CDI、B5I、BWI、PDI 和 ISO)。
- BashBurn — 轻量级基于终端菜单的 CD/DVD 刻录工具前端。
- Brasero — GNOME 桌面的光盘刻录应用程序,旨在尽可能简单易用。
- cdw — cdrecord、mkisofs、growisofs、dvd+rw-mediainfo、dvd+rw-format 和 xorriso 的 Ncurses 前端。
- Gnome CD Master (gcdmaster) — 用于创建音频 CD 并使用 cdrdao 刻录它们的 GUI 前端。
- Graveman — 基于 GTK 的 CD/DVD 刻录应用程序。它需要配置以指向正确的设备。
- isomaster — ISO 镜像编辑器。
- K3b — 功能丰富且易于使用的 CD 刻录和抓取应用程序,基于 KDElibs。属于 kde-multimedia 的一部分。
- X-CD-Roast — 轻量级 cdrtools 前端,用于 CD 和 DVD 写入。
- Xfburn — libburnia 库的简单前端,支持 CD/DVD(-RW)、ISO 镜像和 BurnFree。
- xorriso-tcltk — ISO 和 CD/DVD/BD 刻录工具 xorriso 的图形前端
播放
CD
音频 CD 的播放需要 libcdio 软件包。要使 Dolphin 等 KDE 应用程序能够读取音频 CD,请安装 audiocd-kio。
DVD
如果您希望播放加密的 DVD,则必须安装 libdvd* 软件包
此外,您必须安装播放器软件。流行的 DVD 播放器有 MPlayer、xine 和 VLC。请参阅视频播放器列表以及 MPlayer 的具体说明。
蓝光
请参阅 Blu-ray#播放。
抓取
抓取是将音频或视频内容复制到硬盘的过程,通常来自可移动媒体或媒体流。
音频 CD
控制台
- abcde — 用于抓取音频 CD 的综合命令行工具。
- cdda2wav — 具有偏执模式支持的 CD 音频提取程序。
- cdparanoia — 光盘数字音频 (CDDA) 数字音频提取 (DAE) 工具。
- cyanrip — 功能丰富的 CD 抓取器,具有 Musicbrainz 集成、错误检测、日志生成、多种格式、HDCD 解码、封面艺术自动下载功能。
- redumper — 高级字节完美光盘转储器,支持增量转储、高级 SCSI/C2 修复、智能音频 CD 偏移检测和许多其他功能。
- ripright — 以 autorip 为模型的最小化 CD 抓取器。
- ripit — 支持 MusicBrainz、freeddb 和各种编解码器的命令行抓取器。
- https://www.ripit.pl/ || ripitAUR
- shnsplit — 根据 CUE 文件分割 .wav 和 .flac 文件并编码生成的文件片段。ABCDE 的有用伴侣。
- whipper — CD 抓取器,旨在提高准确性而非速度。使用 cdparanoia、MusicBrainz、AccurateRip。
图形界面
- Asunder — 基于 GTK 的 CD 抓取程序。
- Audex — 基于 KDE 的 CD-ROM 驱动器音频抓取工具。属于 kde-multimedia 的一部分。
- fre:ac — 音频转换器和 CD 抓取器,支持各种流行的格式和编码器。
- https://freac.org/ || freacAUR
- Goobox — GNOME 的 CD 播放器和抓取器。
- Grip — GNOME 项目中快速轻便的 CD 抓取器,类似于 Audiograbber。
- K3b — 功能丰富且易于使用的 CD/DVD 刻录和抓取应用程序,基于 KDElibs。属于 kde-multimedia 的一部分。
- KAudioCreator — 用于抓取和编码音频 CD 的 KDE 程序。已停止维护,并且不再启动。
- ripperX — 用于抓取 CD 音轨并将其编码为 Ogg、MP3 或 FLAC 格式的 GTK 程序。
- rubyripper — 音频光盘抓取器,旨在通过多次抓取同一音轨并纠正任何差异来提供安全抓取。
- Sound Juicer — GNOME 的 CD 抓取器。
- soundKonverter — 各种音频转换器的前端。
DVD-Video
另请参阅 Wikipedia:DVD 抓取软件比较。
通常,抓取 DVD 的过程可以分解为两个子任务
- 数据提取 — 将音频和/或视频数据复制到硬盘,
- 转码 — 将提取的数据转换为合适的格式。
有些实用程序同时执行这两项任务,而另一些则侧重于其中一个方面。
控制台
- dvdbackup — 用于纯数据提取的工具,不进行转码。它可用于与 libdvdcss 结合使用,创建加密 DVD 的精确副本,或用于为其他无法读取加密 DVD 的实用程序解密视频。
- FFmpeg — 完整且免费的互联网直播音频和视频广播解决方案,适用于 Linux/Unix,能够直接从 DVD-Video ISO 镜像中抓取任何格式(音频/视频)的文件,只需选择 ISO 镜像作为输入并继续使用所需的选项即可。它还允许降混、缩小、分割、选择流等功能。
- HandBrake CLI — 简单而强大的视频转码器,非常适合批量 mkv/x264 抓取。
- MEncoder — 免费的命令行视频解码、编码和过滤工具。它支持抓取和转码 DVD-Video。
- subtitleripper — 将 DVD 字幕转换为文本格式。
- Transcode — 用于终端/控制台的视频/DVD 抓取器和编码器。它已过时/不再积极维护。
- || transcodeAUR
- Vobcopy — 将 DVD .vob 文件复制到硬盘,并在复制过程中对其进行解密。
图形界面
- dvd::rip — transcodeAUR 的前端,用于将 DVD 提取到硬盘并进行转码,或即时提取和转码。
- HandBrake — 简单而强大的视频转码器,非常适合批量 mkv/x264 抓取。GTK 版本。
- K3b — 功能丰富且易于使用的 CD/DVD 刻录和抓取应用程序,基于 KDElibs。属于 kde-multimedia 的一部分。
- OGMRip — 一个应用程序和一组库,用于使用各种编解码器将 DVD 抓取和编码为 AVI、OGM、MP4 或 Matroska 文件。它依赖于 mplayer、mencoder、ogmtools、mkvtoolnix、mp4box、oggenc、lame 和 faac 来执行其任务。
DVD-Audio
- Python Audio Tools — 包括 dvda2track,这是一个易于使用的命令行工具,用于将 DVD-Audio 音轨提取为未压缩的 wav 文件。
多格式
- Aaru — 用于 CD、DVD 和硬盘的存档抓取软件
- https://aaru.app || aaruAUR
故障排除
Brasero 无法标准化音频 CD
如果您尝试刻录,它可能会在名为标准化的第一步停止。
作为一种解决方法,您可以使用编辑 > 插件菜单禁用标准化插件
VLC:错误“... 无法打开光盘 /dev/dvd”
如果您收到类似这样的错误
vlc dvdread could not open the disc "/dev/dvd"
这可能是因为您的系统上没有设备节点 /dev/dvd
。Udev 不再创建 /dev/dvd
,而是使用 /dev/sr0
。要解决此问题,请编辑 VLC 配置文件 (~/.config/vlc/vlcrc
)
# DVD device (string) dvd=/dev/sr0
DVD 驱动器噪音大
如果播放 DVD 视频导致系统声音很大,可能是因为光盘的旋转速度超过了其所需的转速。要临时更改驱动器的速度,请运行
# eject -x 12 /dev/dvd
有时
# hdparm -E12 /dev/dvd
可以使用驱动器支持的任何速度,或使用 0 表示最大速度。
新电脑(新 DVD 驱动器)无法播放
如果播放不起作用,并且您有一台新电脑(新 DVD 驱动器),则原因可能是未设置 区域码。您可以使用 regionsetAUR 软件包读取和设置区域码。
以上程序都无法将 DVD 抓取/编码到我的硬盘!
确保您的 DVD 读取器的区域设置正确;否则,您将收到大量莫名其妙的 CSS 相关错误。使用 regionsetAUR 软件包来执行此操作。
如果设置了正确的区域后抓取仍然不起作用,请参阅 libdvdcss 开发人员文档,了解如何启用日志消息和设置其他相关选项。
GUI 程序日志指示后端程序存在问题
如果您使用 GUI 程序并遇到问题,程序的日志将问题归咎于某些后端程序,请尝试通过记录的后端程序参数重现该问题。无论您是否成功重现,您都可以将记录的行以及您自己的发现报告给 #刻录后端问题 部分中提到的位置。
特殊情况:介质错误 / 写入错误
以下是一些关于驱动器不喜欢介质的典型消息。这只能通过使用不同的驱动器或不同的介质来解决。不同的程序几乎没有帮助。
使用后端 growisofs 的 Brasero
BraseroGrowisofs stderr: :-[ WRITE@LBA=0h failed with SK=3h/ASC=0Ch/ACQ=00h]: Input/output error
使用后端 libburn 的 Brasero
BraseroLibburn Libburn reported an error SCSI error on write(16976,16): [3 0C 00] Write error
BD-R DL 50GB 在尝试刻录第二层时出错
使用 dvd+rw-tools 中的 growisofs 刻录 50GB BD-R DL 光盘可能会导致致命错误并损坏介质,例如
$ growisofs -Z /dev/sr0 -J -R -V "label" files
Executing 'mkisofs -J -R -V label files | builtin_dd of=/dev/sr0 obs=32k seek=0' I: -input-charset not specified, using utf-8 (detected in locale settings) 0.03% done, estimate finish Fri Jan 29 19:50:36 2016 0.05% done, estimate finish Fri Jan 29 19:50:36 2016 0.08% done, estimate finish Fri Jan 29 19:50:36 2016 /dev/sr0: pre-formatting blank BD-R for 49.8GB... /dev/sr0: "Current Write Speed" is 8.2x4390KBps. 0.11% done, estimate finish Sat Jan 30 03:29:13 2016 0.13% done, estimate finish Sat Jan 30 02:10:01 2016 ... 63.20% done, estimate finish Fri Jan 29 20:43:45 2016 :-[ WRITE@LBA=b6d820h failed with SK=3h/WRITE ERROR]: Input/output error :-( write failed: Input/output error /dev/sr0: flushing cache /dev/sr0: closing track /dev/sr0: closing session :-[ CLOSE SESSION failed with SK=5h/INVALID FIELD IN CDB]: Input/output error /dev/sr0: reloading tray
这发生在 25GB 边界处,当时开始写入第二层。使用 cdrtools 中的 cdrecord 可以正常工作。已使用 'HL-DT-ST BD-RE WH16NS40' LG 刻录机和 Verbatim BD-R DL 6x 光盘 (#96911) 进行测试。FS#47797
光盘托盘自动关闭
如果在弹出 CD 后,无论是使用 eject
命令还是按下驱动器按钮,驱动器光盘托盘在能够取出光盘之前自动关闭,请尝试以下命令
# sysctl -w dev.cdrom.autoclose=0
如果这解决了问题,请使更改永久生效
/etc/sysctl.d/60-cdrom-autoclose.conf
dev.cdrom.autoclose = 0
如果上述方法不起作用,并且作为最后的手段,您可以从内核中卸载光盘模块
# rmmod sr_mod
现在光盘驱动器应该可以按预期运行,但将不再挂载光盘。将光盘放入驱动器后,通过以下方式重新激活模块
# modprobe sr_mod
现在应该可以挂载光盘。
外部光驱无法识别
另请参阅
- 在美国,在以下条件下允许备份物理获得的媒体:关于盗版 - RIAA。
- Libburnia 项目主页
- Cdrtools 网页