ffmpeg - пакетная обработка и конвертация файлов


Небольшой скрипт под винду - объеденяет все avi-файлы в один и потом сжимает его кодеком + накладываем полупрозрачное лого 🙂 Применяю у себя для обработки не сжатых (больших по объему) avi-файлов после экспорта с камеры.

set "file="
for %%a in (*.avi) do call set "file=%%file%%|%%a"
ffmpeg -i concat:"%file:~1%" -c:v copy -c:a copy combined.avi
ffmpeg -i combined.avi -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -vcodec libx264 -b:v 2048k -f avi combined-NEW.avi
pause

а в моей ситуации еще и звук моно и только на правый канал - пришлось добавить еще чуть параметров для дублирования звука на оба канала:

set "file="
for %%a in (*.avi) do call set "file=%%file%%|%%a"
ffmpeg -i concat:"%file:~1%" -c:v copy -c:a copy combined.avi
ffmpeg -i combined.avi -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -filter_complex channelsplit=channel_layout=stereo -vcodec libx264 -b:v 2048k -f avi combined-NEW.avi
pause

Объденяем mp4 файлы в один

Предыдущий способ иногда не срабатывал на mp4-файлы и вместо объеденения всех в один - брался только первый файл. Нашлось вот такое решение:

  1. запускаем командную строку в папке с файлами и пишем следующую команду:
    (for %i in (*.mp4) do @echo file '%i') > mylist.txt

    этим мы создадим список файлов для обьединения

  2. и дальше мы тут же в командной строке запускаем объединения файлов:
    ffmpeg -f concat -i mylist.txt -c copy output.mp4

инфа была найдена тут