@bitsmans

Как через ffmpeg объединить каждый mp4 файл из папки с одним файлом вне папки?

В папке есть скажем 100 mp4 файлов и с наружи есть один mp4 файл-заставка.
Нужно к каждому файлу в конце добавить эту заставку.
Все файлы уже приведены к единым характеристиками. Поэтому надо просто склеить в цикле через ffmpeg concat.
Кто может сказать такую команду?
  • Вопрос задан
  • 1511 просмотров
Решения вопроса 1
@monah_tuk
Одну команду - нет. Цикл на Shell (sh, bash) будет выглядеть как-то так:
ad=/path/endfile.mp4
clips_in=/path/
clips_out=/tmp/
for clip in $clips_in/*.mp4; do
  nm=`basename $clip .mp4`
  cat | ffmpeg -f concat -i - -c:v copy -c:a copy $clips_out/${nm}_out.mp4 << EOF
file $clip
file $ad
EOF
done

Concat делать способом, который вам больше нравится:
  • ffmpeg.org/ffmpeg-filters.html#concat - требует перекодирования, но результат обычно более гибкий и точный. Скорее всего придётся корректировать pts при помощи опции -fflags +genpts на выходе или фильтра pts.
  • ffmpeg.org/ffmpeg-formats.html#concat-1 - тут всё понятно, pts фиксится автоматом.


Этот способ склейки вам не подойдёт: ffmpeg.org/ffmpeg-protocols.html#concat
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы