光碟驅動器 - 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 項目的主頁

分類：​

- 光碟
- 多媒體
- 包含失效連結的頁面

光碟驅動器
新增話題