Все темы

Archives for: January 2025, 23

Как конвертировать VOB-файлы в mp4 (Linux)

Допустим, у нас есть каталог VOB файлов с видеодиска, из которых хочется получить один файл, например, для удобства просмотра на смарт-ТВ по сети.

  1. Убираем с дороги файлы других расширений и VOB-файлы очень маленькой длины (единицы килобайт) - это какая-то магия видеодисков, нам они не нужны. В случае сомнений, посмотрите, что в них, с помощью видеоплеера - скорее всего, они не играются или там просто чёрный кадр. Если там короткое видео с какой-нибудь заставкой - можно оставить.
  2. Выявляем разрезанные по размеру последовательности файлов. Допустим, для VTS_01 есть: VTS_01_0.VOB, VTS_01_1.VOB, VTS_01_2.VOB и мы видим, что файлы с номерами 0 и 1 имеют длину ровно 1024М, а номер 2 какой-то более короткий. Это значит, что их надо склеить:
    cat VTS_01_0.VOB VTS_01_1.VOB VTS_01_2.VOB > VTS_01.VOB.
    Примечание: этот шаг может быть не обязателен, но иногда ffmpeg на таких нарезках на следующем шаге падает.
    Исходные файлы после склейки убираем с дороги, оставляем склеенный.
  3. Конвертируем VOB-ы в mp4:
    for X in *.VOB ; do ffmpeg -i $X -c copy $X.mp4 ; done
    VOB-файлы больше не нужны, убираем в другой каталог.
  4. Создаём список файлов для склейки окончательного файла, вида:
    file VTS_01.VOB.mp4
    file VTS_02_0.VOB.mp4
    file VTS_02_1.VOB.mp4
    file VTS_03_1.VOB.mp4
    file VTS_04_1.VOB.mp4

    Можно это сделать так:
    (for X in *.mp4 ; do echo "file $X"; done) > list.txt
    Убедитесь, что список получился в правильном порядке, при необходимости отредактируйте.
  5. Склеим файлы по списку в одно видео:
    ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4

Готово!
Примечание: необходимость шага 3 не проверял, обоснование не знаю :)

Archives

                                                                                                                                                                                                                                                                   


© Sergey A. Galin, 1998-2021 sageshome.net/blog/