03.12.2023, 15:12 | #1 |
Главный Кинооператор
Новичок
|
Как миксовать обрезать растягивать сжимать субтитры в ffmpeg!
ffmpeg умеет обрезать, сдвигать, клеить(миксовать) и растягить субтитры. (помимо того что умеет выдирать из файла с видео и вклеивать в файл с видео)
Зачем обрезать? Чтобы потом склеить несколько разных участков. Например наложить субтитры из расширенной версии на обычную. Зачем сдвигать? Сдвиг субтитров можно задать и через параметр delay. И для субтитров большинство плееров понимают этот параметр(в отличие от delay в аудио). Но некоторые плееры не понимают. Поэтому лучше сдвинуть тайминги внутри субтитров. Есть и другие применения, о которых будет написано ниже. Зачем растягивать/сжимать? Один и тот же фильм может выходить с разной скоростью воспроизведения - 23.976, 24, 25 кадров в секунду. Чтобы использовать субтитры с одного источника на другом надо изменить их скорость воспроизведения - а попросту поменять тайминги. Как обрезать субтитры на 48 минуте 30.960 секундах по 70 минуту 56.450 секунду? Код:
При обрезке все тайминги сдвигаются в начало! То есть чтобы вернуть тайминги на место надо будет потом сдвинуть на ту величину с которой обрезали (в данном примере это 00:48:30.960) То есть чтобы просто отрезать первые 3 секунды надо сделать так: Код:
Чтобы в начале задать задержку на 5.5 секунд Код:
Чтобы растянуть(замедлить) в 2 раза Код:
сжать из 23.976 кадров в 25 кадров, то есть ускорить 25/23.976=1,042708333, надо "растянуть" на 0,959040959 Код:
Смешать субтитры друг с другом: Код:
при смешивании ffmpeg сравнивает тайминги(время начала каждого сообщения) и склеивает файлы друг с другом постепенно строчку за строчкой. Полезно будет например если хочется вставить в готовые субтитры какую нибудь недопереведенную фразу, словечко. Можно сделать текстовый файл и потом если замиксовать, то ffmpeg сам найдёт куда вставить и переставит нумерацию. То есть для того чтобы к существующим субтитрам вставить на 5ой минуте слово "Нет". А на 10 минуте слово "Собака" надо будет просто создать файл Код:
и этот файл просто внедрить так чтобы ffmpeg сам вставил куда надо: Код:
Это всё можно комбинировать. Давайте разберём пример как вырезать кусок с 20 ой минуты по 23ую. Надо сначала сделать первый кусок по 20ую минуту: Код:
потом сделать второй кусок с 23ей минуты Код:
потом подвинуть второй кусок туда, где остановился первый кусок(не забываем что при обрезке всё сдвинулось в начало) Код:
потом миксуем первый кусок и второй кусок: Код:
так как второй кусок у нас по таймингам подвинут в конец первого куска, то произойдёт не смешивание, а просто последовательное приклеивание кусков друг к другу. Готово - вырезали кусок размером в 3 минуты. Возможно это всё легко сделать в какой-нибудь программе, но иногда лень что-то скачивать. Хотя растягивать/сжимать даже проще в ffmpeg. Клеить куски друг к другу наверное проще в программе с GUI. |