光盘驱动器 - Arch Linux 中文维基

跳转到内容

# 光盘驱动器

来自 Arch Linux 中文维基

相关文章

- Codecs
- MPlayer
- dvdbackup
- MEncoder
- Blu-ray
- Convert any Movie to DVD Video

来自维基百科：

  在计算机领域，Optical disc drive（ODD）是一种光盘驱动器，它使用激光或可见光频谱内或附近的电磁波作为向光盘读写数据过程的一部分。

## 刻录

这篇文章的某些内容需要扩充。

原因：是否有被 Arch Linux 打包过的命令行工具可以将文件分卷写入碟片中？ (像是 GAFFitter 或 cdrkit 的 dirsplit) (在 Talk:光盘驱动器 中讨论)
警告：有很大数量的光学驱动器和碟片是有很大不同的。通常，在需要可靠性的时候，推荐使用慢速刻录。如果你遇到了未预期的行为时，尝试使用刻录器所支持的最慢速度刻录。

光盘驱动器的刻录过程包括创建或获得一个图像并将其写入光学介质。该镜像原则上可以是任何数据文件。如果你想挂载生成的介质，那么它通常是一个ISO 9660文件系统的镜像文件。音频和多媒体光盘通常是从 .bin 文件刻录的，在 .toc 文件或 .cue 文件的控制下，告诉所需的轨道布局。

### 安装刻录工具

如果你想要使用 GUI 程序，见 #Burning CD/DVD/BD with a GUI。

这里列出的程序是面向命令行的。它们是大多数用于CD、DVD和BD的免费GUI程序所使用的后端。当涉及到故障排除或编写刻录活动的脚本时，GUI用户可能会用到它们。

你至少需要一个创建文件系统镜像的程序和一个能够将数据刻录到你所需要的媒体类型的程序。

可用于创建ISO9660类型镜像的应用有:

- mkisofs(8) 自 cdrtools包
- xorriso(1) 和 xorrisofs(1) 自 libisoburn包

常见的选择是 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包

常见的对于 CD 的选择有 cdrecord，而对于 DVD 和 BD 来说，growisofs 是常见的选择。因为 cdrecord 是第一个不需要解释文件就可以刻录 CD 的程序：growisofs 是第一个提供 DVD 与 BD 写入而没有烧录程序的人为限制的。为将 TOC/CUE/BIN 烧录到 CD，安装 cdrdao包。

自由的 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 字符。 不符合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` 允许识别由ISO文件系统中的目标地址组成的“路径规范” (如 `/photos`) 和源地址 (如 `/home/user/photos`). 使用 "=" 字符分隔。

这个例子将 文件夹 `/home/user/photos``/home/user/mail` and `/home/user/holidays/photos` 分别设为 ISO 镜像中的 `/photos`, `/mail` and `/photos/holidays`。

mkisofs 和 xorrisofs 使用相同的参数。使用安全备份，为 xorrisofs 加上 `--for_backup`，这将记录事件 ACL 并为每个文件存储 MD5 校验值。

见 mkisofs(8) 和 xorrisofs(1) 手册以获得更多关于命令的参数的信息。

### 挂载一个 ISO 镜像

你可以挂载一个 ISO 镜像，如果你想要浏览它的文件。 我们可以使用下面的指令挂载一个 ISO 镜像：

    # mount -t iso9660 -o ro,loop /path/to/file.iso /mount-point

浏览完毕后，一定记得卸载：

    # umount /mount-point

无 Root 用户挂载镜像，见 Mounting images as user。

### 转换 img/ccd 到 iso

转换 `img`/`ccd` 镜像, 你可使用 ccd2iso包:

    $ ccd2iso ~/image.img ~/image.iso

### 知晓你的设备的名称

为剩余部分，假定你设的记录设备的节为 `/dev/sr0`

用下面的指令检查

    $ cdrecord dev=/dev/sr0 -checkdrive

这将报告这个设备的 `Vendor_info` 和 `Indentification`。

如果没有找到设备，检查一切 `/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

提示：如果介质坏了，建议用类似于 ddrescue包 这样的专门工具，见 Disk cloning#Using ddrescue 。

如果原介质是可启动的，它的拷贝也将是一个可启动镜像。你可能将它用于虚拟机的虚拟光驱或将它烧录到光学介质，这也将是可启动的。 [1]

### 擦除CD-RW和DVD-RW

使用过的CD-RW介质需要在写上以前记录的数据之前被擦除。这可以通过以下方式完成

    $ cdrecord -v dev=/dev/sr0 blank=fast

清空有两个选项：blank=fast 和 blank=all。完全清空的持续时间与完全写操作一样长。它覆盖了光盘上的有效载荷数据。然而这不应该被认为是安全地使这些数据不可读。为了这个目的，建议用随机数据进行几次全写运行。

替代命令有：

    $ cdrskin -v dev=/dev/sr0 blank=fast
    $ xorriso -outdev /dev/sr0 -blank as_needed

擦除 DVD-RW 使用 dvd+rw-format 工具来自 dvd+rw-tools包:

    $ 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 无法被用于（低速）硬盘直写，而是需要驱动 ptcdvd。见 pktsetup(8)。

### 格式化 BD-RE 和 BD-R

BD-RE 需要在使用前格式化。当检测到未格式化状态时，烧录程序会自动完成它。然而，数据存储区域的大小可能会受到上述DVD-RW格式命令的影响。

BD-R 可以是格式化的或非格式化的。非格式化的写入将会全程普通速度写入，并提供最大的存储空间。格式化的可以在写入操作时检查，坏块会从空闲块中被替换。这可能会把速度降到一半于普通速度。普通的格式化会使存储空间下降 768MiB。

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、BD 或 DVD:

    $ xorriso -as cdrecord -v dev=/dev/sr0 -sao isoimage.iso

注意：

- 当你准备写入时，确保介质未挂载。当介质包含一个可读的文件系统时，管挂载可能是自动的。在最好的情况下，它会防止烧录程序使用烧录设备。在最坏的情况下，可能会因为读取操作弄坏设备。所以，在不能确定的情况下，

      # umount /dev/sr0

- growisofs 有个关于 BD-R 空白介质的小 bug。它会报出一个错误信息在烧录完成后。像 k3b 这样的程序会认为整个烧录过程失败了。为防止这个问题：
  - 这样 `dvd+rw-format /dev/sr0` 格式化在使用 growisofs 之前。
  - 或用 growisofs 选项 `-use-the-force-luke=spare:none`

### 验证烧录的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`）。如果没有，你可能会一同获得一个 I/O 错误自 `dd` 的运行中。当你感兴趣的时候，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-9960 多会话意味着一个介质使用只读文件系统的同时，依然可以在第一个未被使用的块地址写，并且在这个块上会有新的 ISO 树。这个新树协同于新加的或覆写的文件的数据块。数据的块在旧的 ISO 树中的，无法再被写。

Linux 和其他操作系统将挂载在介质上的最新的会话上的文件夹树。最新的树也将正常的显示旧会话的文件。

#### 使用 cdrecord 的多会话

CD-R 和 CD-RW 在 `-multi` 参数使用时保持可写（或者说可追加）

    $ 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。

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 缺陷管理的情况下写入。这个特性在数据还存在设备缓冲区时读取这些数据块。为避免低读取质量，这些数据块会被写到（或者说重定向到）空区域。

这种检查读取使写速最多降到 BD 介质或驱动器的极限的一半（有时甚至更坏）。大量使用这些空区域也会导致在读取操作中产生大量延迟。所以，BD 缺陷管理并非总是被人想要开启的。

cdrecord 并不格式化 BD-R。但是，在 BD-RE 介质上避免 BD 缺陷管理没有意义。

growisofs 默认格式化 BD-R。使用参数`-use-the-force-luke=spare:none` 可以避免使用 BD 缺陷管理。但是，在 BD-RE 介质上避免 BD 缺陷管理没有意义。

cdrskin、 xorriso 和 xorrecord 默认并不格式化 BD-R。它们需要分别使用`cdrskin blank=format_if_needed`、`xorriso -format as_needed`、 `xorrecord blank=format_overwrite`。这三个程序可以在 BD-RE 和已格式化的 BD-R 上关闭 BD 缺陷管理，通过分别使用 `cdrskin stream_recording=on`、`xorriso -stream_recording on`、`xorrecord stream_recording=on`

### 烧录一个音频 CD

创建你的音频轨，并在不压缩的情况下存储他们为 16 bit、44100 Hz 的立体声 WAV 文件。为将 MP3 文件转换为 WAV 文件，确保 lame包 已经安装。cd 到你存储 MP3 文件的目录，并执行

    $ for i in *.mp3; do lame --decode "$i" "$(basename "$i" .mp3)".wav; done

为避免你在烧录由 LAME 转换而来的 WAV 文件时报错，尝试使用 mpg123包 解码：

    $ for i in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w $(basename "$i" .mp3).wav $i; done

为将 AAC 转换至 WAV，确保 faad2包 已经安装，然后执行：

    $ for i in *.m4a; do faad $i; done

为修复一个已存在的 WAV 文件的码率（或者其他的很多格式），尝试使用包 sox包：

    $ for i in *.wav; do sox "$i" -c 2 -r 44100 "$(basename "$i" .wav)"-ok.wav; done

这些音频文件会被按照它们的文件名，以字母表顺序排列在轨中，如 `01.wav`, `02.wav`, `03.wav` 等等。用以下的指令来模拟烧录 WAV 文件到 音频 CD 中。

    $ cdrecord -dummy -v -pad speed=1 dev=/dev/sr0 -dao -swab *.wav

如果以上操作都正常工作，你可以移除 `-dummy` 来实际烧录 CD。

注意：用以上方法烧录出的碟可能无法在所有的 CD 播放器中播放。对于一个仅音频的碟（丢弃一些音频轨元数据），加入 -audio 标志

使用 cdrdao包 包，执行以下指令，亦可创建“内容表”。

    $ {

        echo "CD_DA"

        for file in *.wav ; do

          echo "TRACK AUDIO"

          echo "FILE \"$file\" 0"

        done

      } > toc

这将使轨道之间不存在间隙。或者，如果您想在某些音轨之间插入 X 秒的间隙，您可以编辑 toc 文件，并在该音轨的 TRACK AUDIO 和 file 行之间插入以下行:

PREGAP 00:0X:00

然后，烧录文件：

    $ cdrdao write --speed X toc

刻录速度可以调节，更低的烧录速度产生更高质量的结果。这是因为音频 CD 格式较数据存储格式的高级错误矫正更少。

用 MPlayer 来测试新的音频 CD：

    $ 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 请求建议，或尝试向程序的 man 页中所列出的邮箱地址求助。

告知他们你尝试的命令及参数、介质类型（如 CD-R、DVD+RW），以及程序运行时的表现（程序信息、非预期表现等），你可能会被告知尝试获得程序最新版本，或者是开发版本来使测试可以通过。

### 用 GUI 程序烧录 CD/DVD/BD

这里有一些可用的用于烧录 CD 的 GUI 程序。

参见 Wikipedia:Comparison of disc authoring software。

- AcetoneISO — All-in-one ISO 工具 (支持 BIN、 MDF、 NRG、 IMG、 DAA、 DMG、 CDI、 B5I、 BWI、 PDI 和 ISO).

  https://sourceforge.net/projects/acetoneiso || acetoneiso2AUR

- BashBurn — 轻量的基于终端目录前端的 CD/DVD 烧录工具

  http://bashburn.dose.se/ || bashburn包

- Brasero — 被尽可能设计的简单的为 GNOME 桌面设计的光盘烧录程序

  https://wiki.gnome.org/Apps/Brasero || brasero包

- cdw — cdrecord、 mkisofs、 growisofs、 dvd+rw-mediainfo、 dvd+rw-format 和 xorriso 的 Ncurses 前端。

  http://cdw.sourceforge.net/ || cdwAUR

- Graveman — 基于 GTK 的 CD/DVD 烧录程序。。它需要配置到真实的烧录设备上。

  https://graveman.tuxfamily.org/ || gravemanAUR

- isomaster — ISO 镜像编辑者。

  http://littlesvr.ca/isomaster || isomasterAUR

- K3b — 基于 KDElibs 的多特性的及易用的 CD 烧录和翻录程序。

  https://userbase.kde.org/K3b || k3b包

- X-CD-Roast — 写入 CD 和 DVD 用的 cdrtools 轻量端。

  http://www.xcdroast.org/ || xcdroastAUR

- Xfburn — 支持 CD 和 DVD （-RW）、ISO 镜像，且支持 BurnFree 的，基于 libburnia 库的简单前端。

  https://docs.xfce.org/apps/xfburn/start || xfburn包

- xorriso-tcltk — xorriso 的图形前端，用于烧录入 ISO 和 CD/DVD/BD 的工具。

  https://www.gnu.org/software/xorriso/ || libisoburn包

## 播放

### CD

CD的音频播放需要libcdio包 软件包。为了使KDE应用程序如Dolphin能够读取CD中的音频，你需要安装audiocd-kio包。

### DVD

如果你想播放加密的DVD，你必须安装诸如libdvd*软件包。

- libdvdread包
- libdvdcss包
- libdvdnav包

除此之外，你还需要安装媒体播放器。热门的DVD播放器包括MPlayer, xine 和 VLC。 参见视频播放上的列表和对于 MPlayer 的特殊介绍。

### Blu-ray

参见 Blu-ray#Playback。

## 翻录

翻录是指把音视频内容从可移除介质或媒体流拷到硬盘中的过程。

### 音频 CD

#### 控制台

- abcde — Comprehensive command-line tool for ripping audio CDs.

  https://abcde.einval.com/ || abcdeAUR

- cdda2wav — CD-audio extraction program with paranoia support.

  http://www.cdda2wav.de/ || cdrtools包

- cdparanoia — Compact Disc Digital Audio (CDDA) Digital Audio Extraction (DAE) tool.

  https://xiph.org/paranoia/index.html || cdparanoia包

- cyanrip — Extensive CD ripper with musicbraniz integration, error detection, log generation, many formats, HDCD decoding, covert art automatic download.

  https://github.com/cyanreg/cyanrip/ || cyanripAUR

- redumper — An advanced byte perfect disc dumper supporting incremental dumps, advanced SCSI/C2 repair, intelligent audio CD offset detection and a lot of other features.

  https://github.com/superg/redumper/tree/main/ || redumperAUR

- ripright — Minimal CD ripper modeled on autorip.

  https://www.mcternan.me.uk/ripright/ || riprightAUR

- ripit — Command-line ripper that supports MusicBrainz, freeddb and various codecs.

  https://www.ripit.pl/ || ripitAUR

- shnsplit — Splits .wav and .flac files according to a CUE sheet and encodes the resulting pieces. A useful companion to ABCDE.

  http://shnutils.freeshell.org/shntool/ || shntoolAUR

- whipper — CD ripper aiming for accuracy over speed. Uses cdparanoia, MusicBrainz, AccurateRip.

  https://github.com/whipper-team/whipper || whipper包

#### 图形化

- Asunder — GTK-based CD ripping program.

  http://littlesvr.ca/asunder/ || asunder包

- Audex — Audio grabber tool for CD-ROM drives based on KDE.

  https://userbase.kde.org/Audex || audex包

- fre:ac — Audio converter and CD ripper with support for various popular formats and encoders.

  https://freac.org/ || freacAUR

- Goobox — CD player and ripper for GNOME.

  https://people.gnome.org/~paobac/goobox/[失效链接 2022-09-22 ⓘ] || goobox包

- Grip — Fast and light CD ripper within the GNOME project that resembles Audiograbber.

  https://sourceforge.net/projects/grip/ || gripAUR.

- K3b — Feature-rich and easy to handle CD/DVD burning and ripping application based on KDElibs.

  https://userbase.kde.org/K3b || k3b包

- KAudioCreator — KDE program for ripping and encoding Audio-CDs. Unmaintained and does not start anymore.

  https://invent.kde.org/unmaintained/kaudiocreator || kaudiocreator-gitAUR

- ripperX — GTK program to rip CD audio tracks and encode them to the Ogg, MP3, or FLAC formats.

  https://sourceforge.net/projects/ripperx/ || ripperxAUR

- rubyripper — Audio disc ripper that tries to deliver a secure rip through multiple rippings of the same track and corrections of any differences.

  https://github.com/bleskodev/rubyripper || rubyripperAUR

- Sound Juicer — CD ripper for GNOME.

  https://wiki.gnome.org/Apps/SoundJuicer || sound-juicer包

- soundKonverter — Front-end to various audio converters.

  https://www.linux-apps.com/content/show.php?content=29024 || soundkonverterAUR

### 视频 DVD

参见 Wikipedia:Comparison of DVD ripper software.

翻录一个 DVD 的过程常常能拆分为两个子项目：

1. 数据解压——把音频与视频复制到硬盘，
2. 转码——把解压过后的数据转换为适宜的格式。

一些工具可以同时完成两项工作，其他的则聚焦于其中一项。

#### 控制台

- dvdbackup — Tool for pure data extraction which does not transcode. It is useful for creating exact copies of encrypted DVDs in conjunction with libdvdcss or for decrypting video for other utilities unable to read encrypted DVDs.

  http://dvdbackup.sourceforge.net/ || dvdbackup包

- FFmpeg — Complete and free Internet live audio and video broadcasting solution for Linux/Unix, capable to do a direct rip in any format (audio/video) from a DVD-Video ISO image, just select the input as the ISO image and proceed with the desired options. It also allows to downmixing, shrinking, spliting, selecting streams among other features.

  https://ffmpeg.org/ || ffmpeg包

- HandBrake CLI — Simple yet powerful video transcoder ideal for batch mkv/x264 ripping.

  https://handbrake.fr/ || handbrake-cli包

- MEncoder — Free command line video decoding, encoding and filtering tool. It supports ripping and transcoding DVD-Video.

  http://www.mplayerhq.hu/ || mencoder包

- subtitleripper — Convert DVD subtitles into text format.

  https://subtitleripper.sourceforge.net/ || subtitleripperAUR

- Transcode — Video/DVD ripper and encoder for the terminal/console. It is outdated/no longer actively maintained.

  || transcodeAUR

- Vobcopy — Copies DVD .vob files to hard disk, decrypting them on the way.

  https://github.com/barak/vobcopy || vobcopyAUR

#### 图形化

- dvd::rip — Front-end to transcodeAUR, used to extract DVD's to the hard disk and transcode or extract and transcode on-the-fly.

  https://www.exit1.org/dvdrip/ || dvdripAUR

- HandBrake — Simple yet powerful video transcoder ideal for batch mkv/x264 ripping. GTK version.

  https://handbrake.fr/ || handbrake包

- K3b — Feature-rich and easy to handle CD/DVD burning and ripping application based on KDElibs.

  https://userbase.kde.org/K3b || k3b包

- OGMRip — An application and a set of libraries for ripping and encoding DVD into AVI, OGM, MP4, or Matroska files using a wide variety of codecs. It relies on mplayer, mencoder, ogmtools, mkvtoolnix, mp4box, oggenc, lame, and faac to perform its tasks.

  http://ogmrip.sourceforge.net/ || ogmripAUR

### 音频 DVD

- Python Audio Tools — Includes dvda2track, which is easy to use command line tool to extract DVD-Audio tracks to uncompressed wav files.

  http://audiotools.sourceforge.net/ || audiotoolsAUR

### 多格式

- Aaru — Software for archival ripping of CDs, DVDs, and harddrives

  https://aaru.app || aaruAUR

## 疑难解答

### Brasero 无法使音频 CD 归一化（normalize）

如果你在第一步“归一化”的时候就出错了，一个解决方法是在在编辑 > 插件菜单中关闭归一化插件。

### VLC: Error "... 无法打开 /dev/dvd"

如 VLC 如下报错

    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 是最大速度）。调节 CD-ROM 和 DVD-ROM 光驱速度

### 播放后端无法在新的电脑（新 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 discs (#96911)。FS#47797

### 光盘托盘自动合上

如果用 `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 项目的主页

分类：​

- 光盘
- 多媒体
- 包含失效链接的页面

光盘驱动器
添加话题