минусплюс +2
08.08.2017 04:26 Обновлено: 18.05.2022 14:31
Запись видео с субтитрами из командной строки Linux

Появилась задачка встроить в своё приложение запись видео с вебкамеры с наложением субтитров. Т.к. приложение адаптировать под мастдай не планируется, то решено было не изобретать велосипед, а использовать встроенные в ОС Linux велосипеды для работы с видео. Я выбрал avconv.

Надо сказать, что выбрал не сразу, а немного поплясал с бубном над разными вариантами вроде mencoder и ffmpeg. Mencoder отказался писать звук. Это меня абсолютно не устроило. В AltLinux ffmpeg заменён полностью на avconv и я решил не сопротивляться.

Звук, кстати, если alsa, смотреть так: cat /proc/asound/cards это понадобится, когда нужно будет указать номер используемой звуковой карты в параметре plughw:1

Мой рабочий скрипт с использованием avconv такой:

Где в $1 я передаю суффикс к названию файла.

Дальше субтитры. Не смог нагуглить вменяемой спецификации по srt. В итоге открыл несколько файлов srt к разным фильмам и сделал похоже. Спецификация по сути такая:

  1. Номер
  2. Время отображения в формате 00:00:02,943 —> 00:00:03,443
  3. Текст субтитров
  4. Пустая строка

Если назвать файл субтитров так же как и файл видео, то vlc подцепляет их автоматом.