翻录 DVD 的章节以分隔文件

Grz*_*nio 11 debian dvd ripping

我有一张儿童卡通 DVD,每一集都有几集。我怎样才能翻录它们,使每一集都在一个单独的文件中?我认为每一集都写成 DVD 上一个标题中的一个章节。

Pet*_*r.O 13

提取第 2 章第 3 章的 .VOB

请注意,'-chapter 3' 和'-chapter 3-' 将从第 3 章复制到最后,如果您指定的章节编号无效,则该选项将被忽略,因此将复制完整标题。

# physical DVD
  mplayer dvd://2 -chapter 3-3 -dumpstream -dumpfile ~/3.VOB

# DVD .iso image  
  mplayer dvd://2 -dvd-device "$dvd_iso" -chapter 3-3 -dumpstream -dumpfile ~/3.VOB  
Run Code Online (Sandbox Code Playgroud)

您可以使用lsdvd列出物理 DVD 的标题、章节、单元格、音频、视频等。但是,似乎(?)没有办法处理.iso. 如果需要,您可以挂载 .iso

# count Titles, and count Cells per title. 
# eg. ${cell[1]}      is the Count of Cells for the first title
#     ${cell[titles]} is the Count of Cells for the last title

eval $(lsdvd | sed -n 's/Title: \([0-9]\+\), .* Chapters: \([0-9]\+\), Cells: .*/cells[$((10#\1))]=$((10#\2));/p')
titles=${#cells[@]}

title_num=2
from_cell=1
to_cell=${cell[title_num]}
Run Code Online (Sandbox Code Playgroud)

dvdxchap,另一方面,可以处理 a .iso,但它不列出标题信息。但是,您可以指定想要获取章节信息的标题。

  title_num=2
  from_cell=1
# physical DVD
  to_cell="$(dvdxchap -t $title_num  /dev/dvd | sed -n 's/^CHAPTER\([0-9]\+\).*/\1/p' | sed -n '$p')"
# DVD .iso image  
  to_cell="$(dvdxchap -t $title_num "$dvd_iso"| sed -n 's/^CHAPTER\([0-9]\+\).*/\1/p' | sed -n '$p')"   
Run Code Online (Sandbox Code Playgroud)

当你知道你想要的标题编号,并知道单元格的数量时,你可以在循环中转储它们:

# physical DVD
  for ((c=$from_cell; c<$to_cell; c++)) ;do
    mplayer dvd://$title_num -chapter $c-$c -dumpstream -dumpfile ~/$c.VOB
  done

# DVD .iso image  
  for ((c=$from_cell; c<$to_cell; c++)) ;do
    mplayer dvd://$title_num -dvd-device "$dvd_iso" -chapter $c-$c -dumpstream -dumpfile ~/$c.VOB
  done
Run Code Online (Sandbox Code Playgroud)