Как записать файл субтитров (SRT) и тайм-код в FFMpeg

Я пытаюсь записать (жесткий код) файл SRT и значение временного кода в файл MP4, но безрезультатно.

В настоящее время я записываю srt и таймкод, используя следующие команды:

Burn SRT

ffmpeg -i input.mp4 -vf subtitles=subs.srt out.mp4

Тайм-код записи

ffmpeg -i input.mp4  -filter_complex "drawtext=fontfile=/Windows/Fonts/arial.ttf:x=320:y=main_h-50:fontsize=32:fontcolor='white':timecode='00\:00\:00\:00':rate=29.97" -y output.mp4

Однако я не могу объединить их в одну команду, так как ffmpeg не позволяет использовать вместе -vf и -filter_complex.

Есть ли обходной путь?

2 ответа

Просто для тех, кто сталкивается с этой QS. Вы можете сделать это с файлом.srt так же, как я делаю это с файлом.ass, с той лишь разницей, что файлы.ass дают нам больше контроля над цветом шрифта и другими вещами. Я не могу найти.srt, поэтому поделюсь.ass, который мне подходит, я использую вывод hls, но вы снова можете использовать mp4:

ffmpeg  -i INPUT_VIDEO_FILE.mp4 -profile:v baseline -level 4.0 -vf "scale=-2:360,subtitles='dynamic_subtitle.ass':force_style='FontName=Aaargh/Aaargh.ttf,PrimaryColour=&H664c4c4c"  -start_number 0 -hls_time 10 -hls_list_size 0 -f hls /s3_temp/video_360.m3u8

Вы можете связать вместе фильтры в серии. Это создает цепочку фильтров. Серия связанных цепочек фильтров представляет собой фильтр-граф.

ffmpeg -i input.mp4 -vf "drawtext,subtitles" -c:a copy output.mp4
  • -vf используется для простых (видео) фильтров, которые состоят из одного входа и одного выхода.

  • -filter_complex используется для сложных фильтровографов, которые состоят из одного или нескольких входов и / или одного или нескольких выходов. Тем не менее, я не думаю, что с помощью -filter_complex для простых фильтровографов возникнут какие-либо проблемы.

  • Поскольку ваш вход и выход MP4, я добавил -c:a copy Потоковое копирование любого аудио, так как вы, вероятно, не нуждаетесь или не хотите перекодировать его.

  • Для большей точности рассмотрите возможность использования rate=ntsc или же rate=30000/1001 вместо rate=29.97,

Другие вопросы по тегам