В Linux ты можешь преобразовать файлы VOB, IFO, BUP в MP4 с помощью утилит ffmpeg
или HandBrakeCLI
. Наиболее универсальный способ — использовать ffmpeg
, который работает напрямую с VOB-файлами.
🛠️ Способ 1: Использование ffmpeg
(рекомендуется)
Установи ffmpeg
, если он ещё не установлен:
sudo apt install ffmpeg
Затем выполни команду:
ffmpeg -i /путь/к/VIDEO_TS/VTS_01_1.VOB -c:v libx264 -c:a aac -strict experimental output.mp4
🔹 Пояснение:
-i
— входной файл (обычно VOB)-c:v libx264
— кодек видео (H.264)-c:a aac
— кодек аудиоoutput.mp4
— имя выходного файла
💡 Если у тебя несколько VOB-файлов (например, VTS_01_1.VOB
, VTS_01_2.VOB
), их можно объединить:
cat VTS_01_1.VOB VTS_01_2.VOB > combined.vob
ffmpeg -i combined.vob -c:v libx264 -c:a aac output.mp4
🧠 Способ 2: Использование HandBrakeCLI
Установи:
sudo apt install handbrake-cli
Затем:
HandBrakeCLI -i /путь/к/VIDEO_TS/ -o output.mp4 -e x264 -q 20 -B 160
🔹 Параметры:
-i
— путь к папке DVD (где лежат VOB, IFO, BUP)-o
— выходной файл-e x264
— кодек-q 20
— качество (меньше — лучше)-B 160
— битрейт аудио
📁 Структура DVD
Обычно DVD содержит:
VIDEO_TS/
├── VIDEO_TS.IFO
├── VIDEO_TS.BUP
├── VTS_01_0.IFO
├── VTS_01_0.BUP
├── VTS_01_1.VOB
├── VTS_01_2.VOB
...
Ты можешь работать напрямую с VTS_01_1.VOB
, или указать всю папку VIDEO_TS
при использовании HandBrakeCLI
.
🔄 Автоматизация
Если хочешь конвертировать все VOB-файлы в текущей директории:
for f in *.VOB; do
ffmpeg -i "$f" -c:v libx264 -c:a aac "${f%.VOB}.mp4"
done
Пакетная обработка
Алексей, вот как можно организовать пакетную обработку VOB-файлов в MP4 через командную строку Linux. Это удобно, если у тебя много DVD-директории или VOB-файлов.
🧰 Скрипт для пакетной конвертации VOB → MP4
Создай файл convert_vob_to_mp4.sh
:
#!/bin/bash
# Папка, где лежат VOB-файлы
SOURCE_DIR="/путь/к/VIDEO_TS"
# Папка, куда сохранять MP4
DEST_DIR="/путь/к/output"
mkdir -p "$DEST_DIR"
for vob in "$SOURCE_DIR"/*.VOB; do
base=$(basename "$vob" .VOB)
echo "Конвертирую $base.VOB → $base.mp4"
ffmpeg -i "$vob" -c:v libx264 -c:a aac -strict experimental "$DEST_DIR/$base.mp4"
done
echo "✅ Все VOB-файлы обработаны."
🔧 Как использовать
- Установи
ffmpeg
, если ещё не установлен:
sudo apt install ffmpeg
- Сделай скрипт исполняемым:
chmod +x convert_vob_to_mp4.sh
- Запусти:
./convert_vob_to_mp4.sh
🧠 Расширение: объединение VOB-файлов
Если DVD разбит на части (VTS_01_1.VOB
, VTS_01_2.VOB
, …), можно объединить:
cat VTS_01_*.VOB > full.vob
ffmpeg -i full.vob -c:v libx264 -c:a aac output.mp4
Как адаптировать скрипт под структуру VIDEO_TS, чтобы он автоматически находил нужные VOB-файлы, объединял и конвертировал
Вот адаптированный Bash-скрипт, который автоматически:
- Находит все папки
VIDEO_TS
- Объединяет основные VOB-файлы (например,
VTS_01_*.VOB
) - Конвертирует их в MP4 с помощью
ffmpeg
- Сохраняет результат в указанную папку
🧰 Скрипт: convert_dvd_to_mp4.sh
#!/bin/bash
# Папка, где искать VIDEO_TS
SOURCE_ROOT="/путь/к/DVD"
# Папка, куда сохранять MP4
DEST_ROOT="/путь/к/output"
mkdir -p "$DEST_ROOT"
# Ищем все VIDEO_TS
find "$SOURCE_ROOT" -type d -name "VIDEO_TS" | while read -r VIDEO_TS_DIR; do
DVD_NAME=$(basename "$(dirname "$VIDEO_TS_DIR")")
OUTPUT="$DEST_ROOT/${DVD_NAME}.mp4"
echo "📀 Обработка DVD: $DVD_NAME"
# Объединяем основные VOB-файлы
VOB_TEMP="/tmp/${DVD_NAME}_combined.vob"
cat "$VIDEO_TS_DIR"/VTS_01_*.VOB > "$VOB_TEMP"
# Конвертируем в MP4
ffmpeg -i "$VOB_TEMP" -c:v libx264 -c:a aac -strict experimental "$OUTPUT"
# Удаляем временный файл
rm "$VOB_TEMP"
echo "✅ Готово: $OUTPUT"
done
🔧 Как использовать
- Установи
ffmpeg
, если ещё не установлен:
sudo apt install ffmpeg
- Сохрани скрипт:
nano convert_dvd_to_mp4.sh
chmod +x convert_dvd_to_mp4.sh
- Запусти:
./convert_dvd_to_mp4.sh
🧠 Примечания
- Скрипт предполагает, что структура такая:
/путь/к/DVD/Фильм1/VIDEO_TS/
/путь/к/DVD/Фильм2/VIDEO_TS/
- Он обрабатывает каждый DVD как отдельный фильм
- Можно адаптировать под
HandBrakeCLI
, если хочешь более гибкое управление качеством
Можно добавить логирование, проверку ошибок, или поддержку других VTS-групп (VTS_02_*
, VTS_03_*
). Или сделать версию, которая работает с ISO-образами. Готов расширить?
Чтобы скрипт использовал видеокарту (GPU) при конвертации, нужно заменить кодек libx264
на аппаратно-ускоренный, соответствующий твоей видеокарте
Вот как модифицировать:
🔧 Обновлённый скрипт с поддержкой GPU
🔹 Для NVIDIA (NVENC):
ffmpeg -hwaccel cuda -i "$VOB_TEMP" -c:v h264_nvenc -preset fast -c:a aac "$OUTPUT"
🔹 Для Intel (QuickSync):
ffmpeg -hwaccel qsv -i "$VOB_TEMP" -c:v h264_qsv -c:a aac "$OUTPUT"
🔹 Для AMD (VAAPI):
ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \
-i "$VOB_TEMP" -vf 'format=nv12,hwupload' \
-c:v h264_vaapi -c:a aac "$OUTPUT"
🧠 Пример: NVIDIA-адаптированный скрипт
#!/bin/bash
SOURCE_ROOT="/путь/к/DVD"
DEST_ROOT="/путь/к/output"
mkdir -p "$DEST_ROOT"
find "$SOURCE_ROOT" -type d -name "VIDEO_TS" | while read -r VIDEO_TS_DIR; do
DVD_NAME=$(basename "$(dirname "$VIDEO_TS_DIR")")
OUTPUT="$DEST_ROOT/${DVD_NAME}.mp4"
echo "📀 Обработка DVD: $DVD_NAME"
VOB_TEMP="/tmp/${DVD_NAME}_combined.vob"
cat "$VIDEO_TS_DIR"/VTS_01_*.VOB > "$VOB_TEMP"
ffmpeg -hwaccel cuda -i "$VOB_TEMP" -c:v h264_nvenc -preset fast -c:a aac "$OUTPUT"
rm "$VOB_TEMP"
echo "✅ Готово: $OUTPUT"
done
📦 Проверка поддержки GPU
Перед запуском проверь, что ffmpeg
собран с нужной поддержкой:
ffmpeg -encoders | grep nvenc
ffmpeg -hwaccels
Если h264_nvenc
или qsv
не отображаются — нужно пересобрать ffmpeg
с соответствующими флагами или установить из ppa:graphics-drivers
.