Copie os capítulos de um DVD para separar arquivos

8

Eu tenho um DVD com desenhos para crianças e há alguns episódios em cada um deles. Como posso copiá-los de tal forma que cada episódio esteja em um arquivo separado? Eu acho que cada episódio é escrito como um capítulo dentro de um título no DVD.

    
por Grzenio 13.07.2012 / 22:37

1 resposta

9

Para extrair o .VOB para o título 2, capítulo 3

Note que '-chapter 3' e '-chapter 3-' serão copiados do capítulo 3 até o final, e se o número do capítulo que você especificar for inválido, a opção será ignorada e, portanto, copiará o título completo.

# 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  

Você pode usar lsdvd para listar título, capítulo, célula, áudio, vídeo etc. para um DVD físico. No entanto, não parece (?) Ter uma maneira de processar um .iso . Você poderia montar um .iso , se necessário.

# 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#))]=$((10#));/p')
titles=${#cells[@]}

title_num=2
from_cell=1
to_cell=${cell[title_num]}

dvdxchap , por outro lado, pode processar .iso , mas não lista informações de título. Você pode, no entanto, especificar o título do qual deseja informações do capítulo.

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

Quando você sabe o número do título que deseja e sabe o número de células, você pode despejá-las em um loop:

# 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
    
por 14.07.2012 / 04:49