У меня есть DVD с мультфильмами для детей, и на каждом из них есть пара эпизодов. Как я могу скопировать их так, чтобы каждый эпизод был в отдельном файле? Я думаю, что каждый эпизод написан в виде главы в одном заголовке на DVD.
Чтобы извлечь .VOB для Заголовка 2, Глава 3
Обратите внимание, что '-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
Вы можете использовать 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]}
dvdxchap
с другой стороны, может обрабатывать .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')"
Когда вы знаете желаемый номер заголовка и знаете количество ячеек, вы можете поместить их в цикл:
# 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
dvdxchap
входит вogmtools
пакет.В качестве сценария, использующего
lsdvd
Python, иffmpeg
для извлечения глав на DVD-диске в текущий каталог (extract-chapters.sh
):Применение:
источник
lsdvd
Python, иffmpeg
потому что все они были в репозиториях OSS дистрибутива; другие инструменты были получены из сторонних репозиториев (напримерdvdbackup
,makemkv
и т. д.).