В помощь видео-любителям ( Обрабатываем видео с помощью ffmpeg )

Господа аспиранты, сегодня я предлагаю вам отвлечься от работы над своей диссертацией. «Дениза, заниматься много – вредно, очень вредно» — говорил тов. Флоридор. Что косвенно подтверждает и Золушка: «Ведь так и заболеть можно».

В связи с тем, что «прогресс который год развивается невиданными темпами, опережая в своём развитии всех, кто развивается не такими темпами», количество фотографов и кинооператоров на Земном шаре превысило уже несколько миллиардов человек. И у аспирантов, как не самых последних обитателей нашей планеты, наверняка скопилось немало видео-шедевров, которые они натюкали своими телефонами или, не дай Бог, видеокамерами.

Как правило, всё это кинематографическое великолепие время от времени «сливается» с телефона или другого гаджета на компьютер в предположении когда-нибудь сесть и, наконец-то, привести этот архив в божеский вид. То есть упорядочить свой «госфильмофонд». Или сформировать из обрывочно и беспорядочно снятых самобеглых картинок что-то идейно и художественно вразумительное, что захотелось бы пересматривать в глубокой старости в окружении любимых внуков и внучек.

Для достижения этой благородной цели умные люди понапридумывали кучу разнообразного софта. Но лично я в своей работе привык использовать самодельные скрипты, решающие поставленные задачи без особых заморочек. Поэтому при обработке видео я использую, в том числе и в основном, замечательную программу “ffmpeg”1)FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах. — «одно из самых мощных и самых простых средств для манипуляций с медиафайлами и, в первую очередь, с видео». В некоторых bat-файлах используется утилита “convert” из джентльменского набора “ImageMagick”2)ImageMagick — кроссплатформенный консольный редактор изображений, а точнее набор консольных программ..

Особой нужды петь дифирамбы программе “ffmpeg” нет. Поэтому далее я предлагаю заинтересованным лицам опробованный мной на протяжении многих лет набор bat-файлов, с помощью которых можно «провернуть» процентов девяносто всех операций с видео-файлами, необходимых в повседневной практике.

Все операции с использванием семидесяти двух батников разбиты по 17 темам. При этом можно глянуть собственно bat-файл, так и скачать его в виде zip-архива по ссылке. Все необходимые, на мой взгляд, комментарии (@rem) и разъяснения даны в тексте самих файлов. Всё это безошибочно пахало и до сих пор пашет на нескольких моих машинах с “Windows 7 Ultimate” и одной с “Windows XP”. Надобности в других операционных системах я уже не имею3) «Любезный Синичкин, убей Бог мою душу, я уже надобности в женщинах не имею. У меня многие даром служат» (содержатель театра Пустославцев, х/ф «Лев Гурыч Синичкин»), но не вижу причин почему бы всему этому рукоделию не функционировать в более старших версиях “Windows”.

Нетерпеливым господам предлагаю сразу скачать полный zip-архив со всеми 72 bat-файлами.

Желающие могут, не отходя от кассы, скачать архивы с исполняемыми файлами “ffmpeg.exe” и “convert.exe” (вместе с необходимыми xml-файлами в архиве), а также mp3-файл с 60 минутами тишины, необходимый при конвертации статичных картинок в видео-файл.

Процедура обработки какого-либо видео-файла сводится к следующему. В выбранную папку закидываете свой видео-файл, упомянутые “ffmpeg.exe”, “convert.exe” (плюс приложенные в архив xml-файлы) и “silence-3600.mp3”, а также требуемый для конкретной обработки bat-файл из архива. При необходимости открываете bat-файл в текстовом редакторе и заменяете выставленные там значения и параметры на свои. В особенности это относится к темам 6 («Преобразование видео (размеры)») и 7 («Изменение размеров видео»), поскольку в этих батниках прописаны ширина и высота моих видео-файлов. Ваши видео могут иметь другие размеры. Бояться не нужно. Это органы зрения боятся, а верхние конечности делают.

Замечу, что во всех выложенных скриптах обрабатываемый видео-файл называется “input” с соответствующим расширением, а результат обработки — “output”. Поэтому перед проведением манипуляций с видео не забудьте переименовать свой шедевр, например, в “input.avi”. А уж затем запускайте соответствующий батник, тюкнув по нему. Ну, и естественно, после обработки обязательно переименуйте полученный файл, скажем, “output.mp4” в «Как я отдыхал на Мальдивах с Анжелиной Джоли.mp4».

Другой вариант: если вы не пользовались до сих пор “ffmpeg.exe” и “convert.exe”, то можете скачать необходимые дистрибутивы: здесь и здесь. Затем нужно установить FFmpeg и ImageMagick стандартным образом, прописать в PATH (при необходимости) пути к соответствующим исполняемым файлам, и после этого спокойно запускать нужные батники в папке со своими видео-файлами.

Небольшое замечание: программа “ffmpeg.exe” довольно прожорлива по части ресурсов, поэтому при обработке видео лучше отложить на время все свои дела в сторонку. Пусть ffmpeg порезвится в вашем компьютере в гордом одиночестве.

На этом заканчиваю вводную и приглашаю «к столу» всех желающих обработать свои видео-архивы. Вскипело…

1. Информация о видео-файле

1. Получение информации об avi-файле
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Получение информации об avi-файле                        "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.avi"
@rem "Выход: info_video-avi.txt"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.avi goto END
@rem 
@rem "Если имеется файл 'info_video-avi.txt', то удаляем его"
if exist info_video-avi.txt del /Q info_video-avi.txt
@rem 
ffmpeg -i input.avi -hide_banner -vf showinfo -f mp4 -an -c:v copy -y /dev/null 2>info_video-avi.txt
@rem 
:END
[свернуть]
2. Получение информации об mp4-файле
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Получение информации об mp4-файле                        "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: info_video-mp4.txt"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'info_video-mp4.txt', то удаляем его"
if exist info_video-mp4.txt del /Q info_video-mp4.txt
@rem 
ffmpeg -i input.mp4 -hide_banner -vf showinfo -f mp4 -an -c:v copy -y /dev/null 2>info_video-mp4.txt
@rem 
:END
[свернуть]

2. Конвертация видео-форматов

1. Преобразование avi-файла в avi-файл (mp3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование avi-файла со звуком в формате AC3         "
@rem "в avi-файл со звуком в mp3-формате                       "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.avi"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.avi goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.avi -acodec libmp3lame -vcodec copy output.avi
@rem 
:END
[свернуть]
2. Преобразование avi-файла в avi-файл (xvid mp3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование avi-файла с AC3 звуком "
@rem "в avi-файл со звуком в формате mp3 и видео в формате xvid"
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.avi"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.avi goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.avi -vcodec copy -vtag xvid -acodec mp3 output.avi
@rem 
:END
[свернуть]
3. Преобразование avi-файла в avi-файл (xvid)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование avi-файла в avi-файл (формат видео xvid)  "
@rem "Формат звука не меняется                                 "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.avi"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.avi goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.avi -vcodec copy -vtag xvid output.avi
@rem 
:END
[свернуть]
4. Преобразование avi-файла в mp4-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование avi в mp4                                 "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.avi"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.avi goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.avi -c copy -bsf:v h264_mp4toannexb output.mp4
@rem 
:END
[свернуть]
5. Преобразование m2ts-файла в mp4-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование m2ts-файла в mp4-файл                     "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.m2ts"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.m2ts goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.m2ts -vcodec copy -acodec copy output.mp4
@rem 
:END
[свернуть]
6. Преобразование mkv-файла в avi-файл (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mkv в avi (высокое качество)              "
@rem "Вариант 1                                                "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mkv"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mkv goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.mkv -f avi -c:v libxvid -b:v 4000k -c:a libmp3lame -b:a 320k output.avi
@rem 
:END
[свернуть]
7. Преобразование mkv-файла в avi-файл (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразования mkv-файла со звуком AC3                   "
@rem "в avi-файл в формате xvid и mp3-звуком                   "
@rem "Вариант 2                                                "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mkv"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mkv goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.mkv -vcodec copy -acodec copy ztemp1.mp4
ffmpeg -i ztemp1.mp4 -vcodec libxvid -b:v 3000k -acodec libmp3lame -ab 320k output.avi
@rem 
@rem "Удаляем промежуточный файл"
if exist ztemp1.mp4 del /Q ztemp1.mp4
@rem 
:END
[свернуть]
8. Преобразование mkv-файла в avi-файл (вариант 3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mkv-файла в avi-файл (формат divx)        "
@rem "Вариант 3                                                "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mkv"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mkv goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.mkv -sn -c:a libmp3lame -ar 48000 -ab 256k -ac 2 -c:v libxvid -crf 24 -vtag DIVX -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 30 -vb 1500k output.avi
@rem 
:END
[свернуть]
9. Преобразование mkv-файла в mkv-файл (mp3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mkv-файла с AC3 звуком                    "
@rem "в mkv-файл со звуком в формате mp3                       "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mkv"
@rem "Выход: output.mkv"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mkv goto END
@rem 
@rem "Если имеется файл 'output.mkv', то удаляем его"
if exist output.mkv del /Q output.mkv
@rem 
ffmpeg -i input.mkv -acodec libmp3lame -vcodec copy output.mkv
@rem 
:END
[свернуть]
10. Преобразование mkv-файла в mp4-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mkv-файла в mp4-файл                      "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mkv"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mkv goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mkv -vcodec copy -acodec copy output.mp4
@rem 
:END
[свернуть]
11. Преобразование mp4-файла в avi-файл (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла в avi-файл                      "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.avi"
@rem 
@rem "Битрейт выходного видео 1200 кбит/с;"
@rem "Битрейт выходного аудио в формате mp3 256 кбит/с"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.mp4 -vcodec libxvid -b 1200k -acodec libmp3lame -ab 256k output.avi
@rem 
:END
[свернуть]
12. Преобразование mp4-файла в avi-файл (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла в avi-файл (видео в формате divx)"
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.avi"
@rem 
@rem "Битрейт выходного видео в формате DIVX 1500 кбит/с"
@rem "Битрейт выходного двухканального аудио в формате mp3 256 кбит/с с частотой выборки 44100 Гц" 
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.mp4 -vtag DIVX -f avi -vcodec mpeg4 -b:v 1500k -acodec mp3 -ab 256k -ac 2 -ar 44.1k output.avi
@rem 
:END
[свернуть]
13. Преобразование mp4-файла в flv-файл (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла в flv-файл - Вариант 1          "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.flv"
@rem 
@rem "Качество flv определяется коэффициентом после '-crf'"
@rem "Чем меньше это число, тем больше битрейт"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.flv', то удаляем его"
if exist output.flv del /Q output.flv
@rem 
ffmpeg -i input.mp4 -c:v libx264 -crf 19 output.flv
@rem 
:END
[свернуть]
14. Преобразование mp4-файла в flv-файл (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла в flv-файл - Вариант 2          "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.flv"
@rem 
@rem -i; указание входного файла
@rem -deinterlace; применить деинтерлейс к видео (устранение видимых строк на видео)
@rem -ar; семпл-рейт звукового потока
@rem -ab; битрейт  звукового потока
@rem -acodec; звуковой кодек
@rem -r; частота кадров
@rem -f; выходной формат (например flv)
@rem -b; битрейт видео потока
@rem -s; размеры видео на выходе (Ширина X Длина)
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.flv', то удаляем его"
if exist output.flv del /Q output.flv
@rem 
ffmpeg -i input.mp4 -ar 44100 -ab 256k -acodec mp3 -ac 2 -r 25 -f flv -b 800k -s 320x180 -aspect 16:9 output.flv
@rem 
:END
[свернуть]
15. Преобразование mp4-файла в gif-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла в gif-файл                      "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.gif"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.gif', то удаляем его"
if exist output.gif del /Q output.gif
@rem 
@rem "Вырезаем из исходного видео фрагмент длительность 9,1 секунды"
@rem "начиная с 0,34 секунды, и приводим его к размеру 480х270"
ffmpeg -i input.mp4 -ss 0.34 -t 9.10 -c:v libx264 -vf scale=480:270 -crf 11 -g 1 -c:a copy ztemp1.mp4
@rem 
@rem "Вырезаем фрагмент размером 270:80 с позиции 170:75"
@rem "270 - ширина, 80 - высота"
@rem "170 - координата Х, 75 - координата Y в исходном видео"
ffmpeg -i ztemp1.mp4 -filter:v "crop=270:80:170:75" ztemp2.mp4
@rem 
@rem "Если папки 'frames' не было, то создаём её"
if not exist frames mkdir frames
@rem 
@rem "Преобразуем видео в набор картинок в папке 'frames'"
ffmpeg -i ztemp2.mp4 -vf scale=270:-1:flags=lanczos,fps=10 frames/ffout%%03d.png
@rem 
@rem "Преобразуем набор картинок в папке 'frames' в gif-файл"
convert -delay 7 -loop 0 - frames/ffout*.png output.gif
@rem 
@rem "Удаляем промежуточные файлы"
if exist ztemp* del /Q ztemp*
@rem 
:END
[свернуть]
16. Преобразование mp4-файла в vob-файл (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4 в vob - Вариант 1                     "
@rem "('хорошее качество VOB')                                 "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.vob"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.vob', то удаляем его"
if exist output.vob del /Q output.vob
@rem 
ffmpeg -i input.mp4 -c:v mpeg2video -q:v 3 -c:a ac3 -b:a 150k output.vob
@rem 
:END
[свернуть]
17. Преобразование mp4-файла в vob-файл (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4 в vob - Вариант 2                     "
@rem "('хорошее качество VOB')                                 "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.vob"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.vob', то удаляем его"
if exist output.vob del /Q output.vob
@rem 
ffmpeg -i input.mp4 -target ntsc-dvd output.vob
@rem 
:END
[свернуть]
18. Преобразование mp4-файла в vob-файл (вариант 3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4 в vob - Вариант 3                     "
@rem "(приемлемое качество vob-файла; размер файла увеличен)   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.vob"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.vob', то удаляем его"
if exist output.vob del /Q output.vob
@rem 
ffmpeg -i input.mp4 -vcodec mpeg2video -b 1200k -acodec ac3 -ar 48000 -ab 384k -ac 2 -g 12 -top 1 -target ntsc-dvd -aspect 4:3 output.vob
@rem 
:END
[свернуть]
19. Преобразование mp4-файла в vob-файл (вариант 4)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4 в vob - Вариант 4                     "
@rem "(приемлемое качество vob-файла; размер файла увеличен)   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.mp4"
@rem "Выход: output.vob"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.vob', то удаляем его"
if exist output.vob del /Q output.vob
@rem 
ffmpeg -i input.mp4 -vcodec mpeg2video -b 1500k -acodec mp3 -ar 44100 -ab 256k -ac 2 -g 12 -top 1 -target ntsc-dvd -aspect 4:3 output.vob
@rem 
:END
[свернуть]
20. Преобразование webm-файла в mp4-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование webm-файла в mp4-файл                     "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход  input.webm"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.webm goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.webm -qscale 0 output.mp4
@rem 
:END
[свернуть]

3. Преобразование видео в изображения

1. Преобразование mp4-файла в набор картинок
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразуем mp4-файл в набор png-изображений             "
@rem "'image001.png', 'image002.png',... в папке 'frames'.     "
@rem "Размер изображений 270х203                               "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4 с размерами, например, 640x480"
@rem "Выход: png-файлы размером 270х203 в папке 'frames'"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если папки 'frames' не было, то создаём её"
if not exist frames mkdir frames
@rem 
@rem "Если в папке 'frames' имеются файлы, то удаляем их"
if exist frames\*.png del /Q frames\*.png
@rem 
@rem "Преобразуем видео в набор картинок в папке 'frames'"
ffmpeg -i input.mp4 -vf scale=270:-1:flags=lanczos,fps=10 frames/image%%03d.png
@rem 
:END
[свернуть]

4. Преобразование изображений в gif-файл

1. Преобразование набора картинок в gif-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразуем набор картинок в папке 'frames'              "
@rem "'image001.png', 'image002.png',... в gif-файл.           "
@rem "Интервал между картинками 7 мс                           "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  png-файлы ОДИНАКОВОГО(!) размера в папке 'frames'"
@rem "Выход: output.gif"
@rem 
@rem "Если в папке 'frames' нет png-файлов, заканчиваем обработку"
if not exist frames/image*.png goto END
@rem 
@rem "Если имеется файл 'output.gif', то удаляем его"
if exist output.gif del /Q output.gif
@rem 
@rem "Преобразуем набор картинок в gif-файл. Интервал между картинками 7 мс"
convert -delay 7 -loop 0 - frames/image*.png output.gif
@rem 
:END
[свернуть]

5. Преобразование изображения в видео

1. Преобразование статичного изображения в видео-файл (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из статичного изображения 'input.png' формируем          "
@rem "видео-файл длительностью 13 секунд                       "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.png"
@rem "Выход: output.mp4"
@rem 
@rem "Если файл изображения отсутствует, то выходим"
if not exist input.png goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Если нужен видео-файл другой длительности, то '13'"
@rem "заменяем на другую величину"
ffmpeg -loop 1 -i input.png -c:v mpeg4 -t 13 -pix_fmt yuvj420p output.mp4
@rem                                      ^ 
@rem 
:END
[свернуть]
2. Преобразование статичного изображения в видео-файл (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из статичного изображения input.png формируем видео-файл "
@rem "длительностью 5 секунд                                   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.png"
@rem "Выход: output.mp4"
@rem 
@rem "Если файл изображения отсутствует, то выходим"
if not exist input.png goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Если нужен видео-файл другой длительности, то '5'"
@rem "заменяем на другую величину"
ffmpeg -loop 1 -i input.png -c:v libx264 -t 5 -pix_fmt yuv420p output.mp4
@rem                                        ^
@rem 
:END
[свернуть]
3. Преобразование статичного изображения в видео-файл (вариант 3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из статичного изображения input.png формируем avi-файл   "
@rem "длительностью 58 секунд                                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.png"
@rem "Выход: output.avi"
@rem 
@rem "Частота кадров: 29.97"
@rem "Размеры видео: 1920x1080"
@rem "Битрейт видео: 2000 кб/с"
@rem "Формат видео: xvid"
@rem "Битрейт аудио: 320 кб/с"
@rem "Формат аудио: mp3"
@rem 
@rem "Если файл изображения отсутствует, то выходим"
if not exist input.png goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Если нужен видео-файл другой длительности, то '00:00:58'"
@rem "заменяем на другое значение"
ffmpeg -loop 1 -i input.png -r 29.97 -s 1920x1080 -aspect 16:9 -t 00:00:58 -vcodec libxvid -b:v 2000k -acodec libmp3lame -ab 320k output.avi
@rem                                                                  ^
@rem 
:END
[свернуть]

6. Преобразование видео (размеры)

1. Изменение размеров видео-файла (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла с размерами 640x480             "
@rem "в видео-файл с размерами 320x180                         "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Обрезаем сбоку (слева и справа) по 10 пикселей."
@rem " Получаем видео-файл 620х480"
ffmpeg -i input.mp4 -filter:v "crop=620:480:10:00" -c:a copy ztemp1.mp4
@rem 
@rem "Уменьшаем размеры видео по высоте и ширине в два раза."
@rem "Получаем видео-файл 310х240"
ffmpeg -i ztemp1.mp4 -vf scale=trunc(oh*a/2)*2:min(240\,iw) ztemp2.mp4
@rem 
@rem "Добавляем черные полосы по 5 пикселей слева и справа."
@rem "Получаем видео-файл 320х240"
ffmpeg -i ztemp2.mp4 -vf pad=320:240:5:0 ztemp3.mp4
@rem 
@rem "Обрезаем видео-файл, получая фрагмент высотой 180 пикселей, отступив сверху 16 пикселей."
@rem "Получаем видео-файл 320х180"
ffmpeg -i ztemp3.mp4 -filter:v "crop=320:180:00:16" -c:a copy output.mp4
@rem
:END
[свернуть]
2. Изменение размеров видео-файла (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразования mp4-файла с размерами 640x480             "
@rem "в видео-файл с размерами 320x180                         "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Пропорции исходного видео 4:3 сохраняются."
@rem "Будут автоматически добавлены черные полосы слева и справа."
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf scale=320:180 output.mp4
@rem 
:END
[свернуть]
3. Изменение размеров видео-файла (вариант 3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла с размерами 494x360             "
@rem "в файл с размерами 246x180                               "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf scale=trunc(oh*a/2)*2:min(180\,iw) output.mp4
@rem 
:END
[свернуть]
4. Изменение ширины видео-файла
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла с размерами 1280x720            "
@rem "в видео-файл с меньшей шириной изображения               "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход: input.mp4 с размерами 1280x720"
@rem "Выход 1: output1.mp4 с размерами 960x540"
@rem "Выход 2: output2.mp4 с размерами 480x270"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеются файлы 'output*.mp4', то удаляем их"
if exist output*.mp4 del /Q output*.mp4
@rem 
ffmpeg -i input.mp4 -vf "scale=960:-1" output1.mp4
@rem 
ffmpeg -i input.mp4 -vf "scale=480:-1" output2.mp4
@rem 
:END
[свернуть]
5. Формирование черных полей у видео-файла (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Видео 'input.mp4' с размерами 640х480 вписываем          "
@rem "в центр чёрного прямоугольника 720х524                   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Добавляем чёрные поля шириной 40 слева и справа; 40 = (720 - 640)/2"
@rem "Добавляем чёрные поля высотой 22 сверху и снизу; 22 = (524 - 480)/2"
ffmpeg -i input.mp4 -filter_complex "scale=640:480,pad=720:524:40:22" output.mp4
@rem 
:END
[свернуть]
6. Формирование черных полей у видео-файла (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование mp4-файла с размерами 960x720             "
@rem "в mp4-файл с размерами 1280x720                          "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Добавляем чёрные поля шириной 160 слева и справа; 160 = (1280 - 960)/2"
ffmpeg -i input.mp4 -vf scale=960:720,pad=1280:720:160:0 output.mp4
@rem 
:END
[свернуть]

7. Изменение размеров видео

1. Вырезание фрагмента из исходного видео
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из исходного видео-файла вырезаем фрагмент               "
@rem "с размерами 80x60, начиная с позиции (200, 100)"
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "80 - ширина, 60 - высота вырезаемого видео-фрагмента"
@rem "200 - координата X, 100 - координата Y относительно"
@rem "левого верхнего угла исходного видео"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -filter:v "crop=80:60:200:100" -c:a copy output.mp4
@rem 
:END
[свернуть]
2. Обрезание полос сверху и снизу в исходном видео
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразования файла 640x480 в файл размером 640x420     "
@rem "Сверху и снизу удаляются полосы по 30 пикселей высотой   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Здесь '60' - это 2*30, а '30' - высота обрезаемых полос"
@rem "При необходимости обрезать полосы другой высоты заменяем"
@rem "'60' на удвоенную высотоц одной полосы"
@rem 
ffmpeg -i input.mp4 -filter:v "crop=in_w:in_h-60" -c:a copy output.mp4
@rem
:END
[свернуть]

8. Изменение длительности видео

1. Извлечение фрагмента видео-файла заданной длительности (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вариант 1                                                "
@rem "Вырезаем видео-фрагмент длительностью 14 секунд,         "
@rem "начиная с 32-ой секунды                                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -ss 00:00:32 -t 00:00:14 -async 1 output.mp4
@rem 
:END
[свернуть]
2. Извлечение фрагмента видео-файла заданной длительности (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вариант 2                                                "
@rem "Вырезаем видео-фрагмент с 19-ой секунды по 34 секунду    "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Внимание!"
@rem "В данном случае начало и длительность вырезаемого фрагмента"
@rem "mp4-файла нужно будет подбирать 'вручную'"
@rem "Но лучше использовать 'вариант 1'"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -ss 00:00:19 -to 00:00:34 -c copy output.mp4
@rem 
:END
[свернуть]
3. Разбиение видео-файла в формате mp4 на части
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Разбиваем исходный видео-файл на части длительностью     "
@rem "примерно по 28 секунд                                    "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: видео-файлы 'part0001.mp4', 'part0002.mp4',... в папке 'split'"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если папки 'split' не было, то создаём её"
if not exist split mkdir split
@rem 
@rem "Если в папке 'split' имеются файлы, то удаляем их"
if exist split\*.mp4 del /Q split\*.mp4 
@rem 
@rem "Здесь '28' - это примерная длительность одной части"
@rem "Если нужны видео-фрагменты с другой длительностью,"
@rem "то заменяем '28' на другое значение в секундах"
ffmpeg -i input.mp4 -c copy -map 0 -segment_time 28 -f segment -reset_timestamps 1 split\part%%04d.mp4
@rem                                              ^
@rem 
:END
[свернуть]
4. Удаление начального фрагмента видео-файла
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "БЫСТРОЕ удаление начального фрагмента видео в 21.4 секунды"
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "В данном примере общая длительность видео-файла"
@rem "была 1 минута 16 секунд"
@rem "После удаления 21.4 секунды файл на выходе будет иметь"
@rem "примерную длительность 48 секунд"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -ss 00:00:21.4 -i input.mp4 -to 00:01:16 -c copy output.mp4
@rem 
:END
[свернуть]

9. Сжатие видео

1. Сжатие объема видео-файла в формате mp4
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Сжатие объёма исходного mp4-файла                        "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход 1: output1.mp4"
@rem "Выход 2: output2.mp4"
@rem 
@rem "Внимание!"
@rem "Чтобы добиться нужного  размера видео,"
@rem "необходимо подбирать параметр -crf"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output1.mp4', то удаляем его"
if exist output1.mp4 del /Q output1.mp4
@rem 
@rem "Если имеется файл 'output2.mp4', то удаляем его"
if exist output2.mp4 del /Q output2.mp4
@rem 
@rem "Пример 1: большее сжатие (-crf 28)"
ffmpeg -i input.mp4 -vcodec libx264 -preset veryslow -crf 28 output1.mp4
@rem                                                       ^
@rem 
@rem "Пример 2: меньшее сжатие (-crf 24)"
ffmpeg -i input.mp4 -vcodec libx264 -preset veryslow -crf 24 output2.mp4
@rem                                                       ^
@rem 
:END
[свернуть]

10. Обработка звука в видео-файле

1. Вставляем звуковую дорожку в видео-файл (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вариант 1                                                "
@rem "Вставляем звуковую дорожку в видео-файл                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход 1: видео-файл 'output.mp4' с ранее удалённым звуковым треком"
@rem "Вход 2: аудио-файл 'newtrack.mp3'"
@rem "Выход: output2.mp4"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist output.mp4 goto 1
:1
if not exist newtrack.mp3 goto END
@rem 
@rem "Если имеется файл 'output2.mp4', то удаляем его"
if exist output2.mp4 del /Q output2.mp4
@rem 
ffmpeg -i new_sound.mp3 -i output.mp4 output2.mp4
@rem 
:END
[свернуть]
2. Вставляем звуковую дорожку в видео-файл (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вариант 2                                                "
@rem "Вставляем звуковую дорожку в видео-файл                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход 1: видео-файл 'output.mp4' с ранее удалённым звуковым треком"
@rem "Вход 2: аудио-файл 'newsound.wav'"
@rem "Выход: output3.mp4"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist output.mp4 goto 1
:1
if not exist newtrack.mp3 goto END
@rem 
@rem "Если имеется файл 'output3.mp4', то удаляем его"
if exist output3.mp4 del /Q output3.mp4
@rem 
ffmpeg -i newsound.wav -i output.mp4 output3.mp4
@rem 
:END
[свернуть]
3. Вырезание фрагмента аудио-файла
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вырезание фрагмента аудио-файла со 157 секунды           " 
@rem "длительностью 75 секунд                                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp3"
@rem "Выход: output.mp3"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp3 goto END
@rem 
@rem "Если имеется файл 'output.mp3', то удаляем его"
if exist output.mp3 del /Q output.mp3
@rem 
ffmpeg -i input.mp3 -ss 00:02:37 -t 00:01:15 -c:v libx264 -c:a copy output.mp3
@rem 
:END
[свернуть]
4. Извлекаем звуковую дорожку из видео-файла (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вариант 1                                                "
@rem "Извлекаем звуковую дорожку из видео-файла в mp3-формате  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp3"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp3', то удаляем его"
if exist output.mp3 del /Q output.mp3
@rem 
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320k -f mp3 output.mp3
@rem 
:END
[свернуть]
5. Извлекаем звуковую дорожку из видео-файла (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вариант 2                                                "
@rem "Извлекаем звуковую дорожку из видео-файла в mp3-формате  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp3"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp3', то удаляем его"
if exist output.mp3 del /Q output.mp3
@rem 
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
@rem 
:END
[свернуть]
6. Преобразование wav-файла в mp3-файл
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразуем wav в mp3 с частотой выборки 44100 Гц        "
@rem "и битрейтом 320 кб/с                                     "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.wav"
@rem "Выход: output.mp3"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.wav goto END
@rem 
@rem "Если имеется файл 'output.mp3', то удаляем его"
if exist output.mp3 del /Q output.mp3
@rem 
ffmpeg -i input.wav -vn -ar 44100 -ac 2 -ab 320k -f mp3 output.mp3
@rem 
:END
[свернуть]
7. Удаляем звуковую дорожку из видео-файла (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Удаляем звуковую дорожку из видео-файла в формате avi    "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.avi"
@rem "Выход: output.avi"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.avi goto END
@rem 
@rem "Если имеется файл 'output.avi', то удаляем его"
if exist output.avi del /Q output.avi
@rem 
ffmpeg -i input.avi -c copy -an output.avi
@rem 
:END
[свернуть]
8. Удаляем звуковую дорожку из видео-файла (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Удаляем звуковую дорожку из видео-файла в формате mp4    "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -c copy -an output.mp4
@rem 
:END
[свернуть]

11. Нарастание и затухание видео

1. Формирование видео-файла с нарастанием и затуханием (вариант 1)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из исходного видео-файла формируем файл                  "
@rem "с 3-секундным нарастанием и 3-секундным затуханием       "
@rem "видео и аудио                                            "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Внимание!"
@rem "В этом случае нужно знать длительность исходного видео"
@rem
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Пример дан для случая длительности исходного видео T = 76 секунд"
@rem "и длительности нарастания/затухания D = 3 секунды"
@rem "А число '73' - это разность (T - D)"
@rem 
@rem "Если длительность вашего видео другая, то нужно определить"
@rem "длительность видео в секундах 'T'" 
@rem "например, с помощью команды"
@rem ffmpeg -i input.mp4 -hide_banner -vf showinfo -f mp4 -an -c:v copy -y /dev/null 2>video-info.txt
@rem "и заменить '76' на 'T' в секундах"
@rem 
@rem "Если нужна другая длительность нарастания/затухания 'D'"
@rem "то нужно заменить '3' на 'D' в секундах."
@rem "После чего заменить '73' на 'T - D' в секундах"
@rem 
@rem "Например, определили длительность (Duration) видео."
@rem "Пусть она равна 00:02:09.68 или 129 секундам."
@rem "Тогда при длительности нарастания/затухания 3 секунды '73' заменяем на '126'"
@rem 
@rem "Соответствующие 6 позиций для изменения в командной строке ниже обозначены '^'"
ffmpeg -i input.mp4 -filter_complex "fade=in:st=0:d=3, fade=out:st=73:d=3; afade=in:st=0:d=3, afade=out:st=73:d=3" -c:v libx264 -c:a aac output.mp4
@rem                                                ^               ^   ^                  ^                ^   ^
@rem 
:END
[свернуть]
2. Формирование видео-файла с нарастанием и затуханием (вариант 2)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из исходного видео-файла формируем видео-файл            "
@rem "с 4-секундным нарастанием/затуханием изображения         "
@rem "и 2-секундным нарастанием/затуханием аудио               "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "В данном случае длительность видео-файла 28 секунд"
@rem 
@rem "В командной строке ниже следующие параметры:"
@rem 
@rem "fade="
@rem "'st=0' - начальный момент нарастания видео в секундах"
@rem "'d=4' - длительность нарастания видео в секундах"
@rem "'st=24' - начальный момент затухания видео в секундах"
@rem "'d=4' - длительность затухания видео в секундах"
@rem 
@rem "afade="
@rem "'st=0' - начальный момент нарастания аудио в секундах"
@rem "'d=2' - длительность нарастания аудио в секундах"
@rem "'st=26' - начальный момент затухания аудио в секундах"
@rem "'d=2' - длительность затухания аудио в секундах"
@rem 
@rem "24 = 28 - 4"
@rem "26 = 28 - 2"
@rem 
ffmpeg -i input.mp4 -filter_complex "[0:v]fade=in:st=0:d=4,fade=out:d=4:st=24[v];[0:a]afade=in:st=0:d=2,afade=out:d=2:st=26[a]" -map "[v]" -map "[a]" output.mp4
@rem 
:END
[свернуть]
3. Формирование видео-файла с нарастанием и затуханием (вариант 3)
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из исходного видео-файла формируем видео-файл            "
@rem "с 5-секундным нарастанием и 5-секундным затуханием       "
@rem "видео и аудио                                            "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Внимание!"
@rem "В этом примере НЕ ТРЕБУЕТСЯ определять длительность видео-файла"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "В данном примере длительность нарастания/затухания задана равной 5 секундам."
@rem 
@rem "Соответствующие позиции для изменения длительности нарастания/затухания"
@rem "в командной строке ниже обозначены '^'"
@rem 
@rem "Если нужно установить другую длительность нарастания/затухания,"
@rem "то число 5 на обозначенных позициях нужно заменить другим".
@rem 
@rem "Параметр '-crf 20' определяет качество изображения и размер выходного файла."
@rem "При '-crf 28' качество изображения будет хуже, а размер выходного файла - меньше"
@rem 
ffmpeg -i input.mp4 -sseof -5 -copyts -i input.mp4 -lavfi "[1]fade=out:s=5:d=5[tail];[0][tail]overlay,fade=in:s=0:d=5,scale=iw:ih
.
;anullsrc,atrim=0:5[audiotail];[0][audiotail]acrossfade=d=5,afade=d=5
.
" -map "
.
" -map "
.
" -vsync 2 -c:v libx264 -crf 20 -preset slow -shortest output.mp4
@rem                        ^                                            ^   ^                                      ^                                     ^                                       ^         ^                                                                  ^
@rem 
:END
[свернуть]
4. Формирование видео-файла с нарастанием
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Из исходного видео-файла формируем видео-файл            "
@rem "с 5-секундным нарастанием видео и аудио                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "В данном примере длительность нарастания/затухания задана равной 2 секундам."
@rem 
@rem "Соответствующие позиции для изменения длительности нарастания/затухания"
@rem "в командной строке ниже обозначены '^'"
@rem 
@rem "Если нужно установить другую длительность нарастания/затухания,"
@rem "то число 2 на обозначенных позициях нужно заменить другим".
@rem 
ffmpeg -i input.mp4 -filter_complex "fade=in:st=0:d=3; afade=in:st=0:d=3" -c:v libx264 -c:a aac output.mp4
@rem                                                ^                  ^
@rem 
:END
[свернуть]

12. Объединение видео-файлов в один

1. Объединение двух mp4-файлов бок о бок
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "'Склеиваем' видео-файлы рядом, 'бок о бок'               "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Внимание!"
@rem "'Склеиваемые' видео-файлы должны иметь одинаковую высоту"
@rem 
@rem "Вход 1: input-left.mp4 ('левый')"
@rem "Вход 2: input-right.mp4 ('правый')"
@rem "Выход: output-LR.mp4"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist input-left.mp4 goto 1
@rem 
:1
if not exist input-right.mp4 goto END
@rem 
@rem "Если имеется файл 'output-LR.mp4', то удаляем его"
if exist output-LR.mp4 del /Q output-LR.mp4
@rem 
@rem "Из двух видео-файлов - 'левого' ('left') и 'правого' ('right')"
@rem "формируем общий видео-файл 'output-LR.mp4'"
ffmpeg -i input-left.mp4 -i input-right.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[v]; [0:a][1:a]amerge[a]" -map "[v]" -map "[a]" -ac 2 output-LR.mp4
@rem 
:END
[свернуть]
2. Последовательное объединение двух mp4-файлов одинакового размера
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Последовательное объединение двух mp4-файлов             "
@rem "одинакового размера в один файл 'output-all.mp4'         "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Внимание!"
@rem "Объединять нужно файлы, имеющие звуковую дорожку."
@rem "Пусть даже звуковая дорожка представляет собой 'тишину'."
@rem
@rem "Вход 1: input1.mp4"
@rem "Вход 2: input2.mp4"
@rem "Выход:  output-all.mp4"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist input1.mp4 goto 1
@rem 
:1
if not exist input2.mp4 goto END
@rem 
@rem "Если имеется файл 'output-all.mp4', то удаляем его"
if exist output-all.mp4 del /Q output-all.mp4
@rem 
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
@rem 
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output-all.mp4
@rem 
@rem "Ниже - пример обработки для случая 4-х входных файлов:"
::ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
::ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
::ffmpeg -i input3.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate3.ts
::ffmpeg -i input4.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate4.ts
::ffmpeg -i "concat:intermediate1.ts|intermediate2.ts|intermediate3.ts|intermediate4.ts" -c copy -bsf:a aac_adtstoasc output-all.mp4
@rem 
@rem "Удаляем промежуточные файлы"
if exist intermediate*.ts del /Q intermediate*.ts
@rem 
:END
[свернуть]

13. Изменение параметров видео

1. Преобразование цветного видео в черно-белое
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразуем цветное видео в черно-белое                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf hue=s=0 -acodec copy output.mp4
@rem 
:END
[свернуть]
2. Увеличение контраста изображения
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Увеличение контраста изображения                         "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "При необходимости изменяем коэффициент 1.6 в большую или меньшую сторону"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf "eq=contrast=1.6" output.mp4
@rem 
:END
[свернуть]
3. Увеличение резкости изображения
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Увеличение резкости изображения видео                    "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
@rem "Необходимо подбирать параметры фильтра 'unsharp'"
ffmpeg -i input.mp4 -filter:v "unsharp=5:5:0.6:5:5:0.0" output.mp4
@rem 
:END
[свернуть]
4. Увеличение яркости и насыщенности изображения
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Увеличение яркости и насыщенности видео                  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "При необходимости изменяем коэффициенты, отвечающие"
@rem "за яркость (0.08) и насыщенность (1.2) в большую или меньшую сторону"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf eq=brightness=0.08:saturation=1.2 -c:a copy output.mp4
@rem 
:END
[свернуть]
5. Увеличение яркости изображения
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Увеличение яркости изображения видео                     "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "При необходимости изменяем коэффициент 1.4 в большую или меньшую сторону"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf lutyuv=y=val*1.4 output.mp4
@rem 
:END
[свернуть]
6. Увеличение яркости насыщенности и контраста изображения
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Увеличение яркости, насыщенности и контраста видео       "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "При необходимости изменяем коэффициенты, отвечающие"
@rem "за яркость (0.04), насыщенность (1.1) и контраст (1.4)"
@rem "в большую или меньшую сторону"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf eq=brightness=0.04:saturation=1.1:contrast=1.4 -c:a copy output.mp4
@rem 
:END
[свернуть]
Спойлер
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Уменьшение параметра 'гамма' изображения видео           "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf lutyuv=y=gammaval(0.6) output.mp4
@rem 
:END
[свернуть]

14. Субтитры в видео

1. Добавление субтитров к видео
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Добавление субтитров к видео                             "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход 1: input.mp4"
@rem "Вход 2: subtitles.ass"
@rem "Выход:  output.mp4"
@rem 
@rem "Внимание! Субтитры должны быть в формате ass"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist input.mp4 goto 1
@rem 
:1
if not exist subtitles.ass goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf ass=subtitles.ass output.mp4
@rem 
:END
[свернуть]
2. Преобразование srt-титров в формат ass
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование srt-титров в формат ass                   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  subtitles.srt"
@rem "Выход: subtitles.ass"
@rem 
@rem "Внимание! srt-субтитры должны быть в формате UTF-8"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist subtitles.srt goto END
@rem 
@rem "Если имеется файл 'subtitles.ass', то удаляем его"
if exist subtitles.ass del /Q subtitles.ass
@rem 
ffmpeg -i subtitles.srt subtitles.ass
@rem 
:END
[свернуть]

15. Вращение видео

1. Вертикальное отражение видео
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Вертикальное отражение видео                             "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf hflip output.mp4
@rem 
:END
[свернуть]
2. Поворот видео на 180 градусов и вертикальное отражение
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Поворот видео на 180 градусов и вертикальное отражение   "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf vflip output.mp4
@rem 
:END
[свернуть]
3. Поворот видео на 180 градусов
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Поворот видео на 180 градусов                            "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
@rem 
:END
[свернуть]
4. Поворот видео на 90 градусов по часовой стрелке и вертикальное отражение
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Поворот видео на 90 градусов по часовой стрелке          "
@rem "и вертикальное отражение                                 "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf "transpose=3" output.mp4
@rem 
:END
[свернуть]
5. Поворот видео на 90 градусов по часовой стрелке
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Поворот видео на 90 градусов по часовой стрелке          "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
@rem 
:END
[свернуть]
6. Поворот видео на 90 градусов против часовой стрелки и вертикальное отражение
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Поворот видео на 90 градусов против часовой стрелки      "
@rem "и вертикальное отражение                                 "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf "transpose=0" output.mp4
@rem 
:END
[свернуть]
7. Поворот видео на 90 градусов против часовой стрелки
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Поворот видео на 90 градусов против часовой стрелки      "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход:  input.mp4"
@rem "Выход: output.mp4"
@rem 
@rem "Если обрабатываемый файл отсутствует, то выходим"
if not exist input.mp4 goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4
@rem 
:END
[свернуть]

16. Добавление логотипа

1. Добавление логотипа на видео
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Добавление логотипа на видео                             "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход 1: input.mp4"
@rem "Вход 2: logo.png" (файл изображения с логотипом)
@rem "Выход:  output.mp4"
@rem 
@rem "380 - это координата верхнего правого угла лого по X"
@rem "20  - координата верхнего правого угла лого по Y"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist input.mp4 goto 1
@rem 
:1
if not exist logo.png goto END
@rem 
@rem "Если имеется файл 'output.mp4', то удаляем его"
if exist output.mp4 del /Q output.mp4
@rem 
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=380:20" output.mp4
@rem 
:END
[свернуть]

17. Видео-заставка

1. Формирование видео-заставки
@Echo off
cls
@rem 
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Формирование видео-заставки из статичного изображения    "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem 
@rem "Вход 1: in001.png - файл изображения"
@rem "Вход 2: in002.png - картинка с такими же размерами - черный фон"
@rem "Вход 3: silence-3600.mp3 - 'тишина' длительностью 60 минут"
@rem "Выход:  output.mp4 длительностью 5 секунд и частотой кадров 30"
@rem 
@rem "Видео-заставка с нарастанием и затуханием статичной картинки"
@rem "Используются два статичных изображения одинаковых размеров"
@rem 
@rem "Если обрабатываемые файлы отсутствуют, то выходим"
if not exist in001.png goto 1
@rem 
:1
if not exist in002.png goto 2
@rem 
:2
if not exist silence-3600.mp3 goto END
@rem 
@rem "Генерируем промежуточный видео-файл 'ztemp1.mp4'"
@rem "здесь '5' - это длительность видео"
@rem "здесь '30' - это частота кадров"
ffmpeg -r 1/5 -i in%%03d.png -c:v libx264 -r 30 -y -pix_fmt yuv420p ztemp1.mp4
@rem 
@rem "Формируем 1-секундное (30 фреймов) начальное появление 'fade-in' исходной картинки"
ffmpeg -i ztemp1.mp4  -y -vf fade=in:0:30 ztemp2.mp4
@rem 
@rem "Формируем 1-секундное затухание 'fade-out' исходной картинки"
@rem "затухание 30 фреймов (1 секунда) начинается со 120 фрейма (с 4-й секунды)"
ffmpeg -i ztemp2.mp4  -y -vf fade=out:120:30 ztemp3.mp4
@rem 
@rem "Формируем аудио-файл 'тишины' длительностью 5 секунд"
ffmpeg -i silence-3600.mp3 -ss 00:00:00 -t 00:00:05 -c:v libx264 -c:a copy ztemp4.mp3
@rem 
@rem "Добавляем аудио-файл 'тишины' к 'немому' видео-файлу 'ztemp3.mp4'"
ffmpeg -i ztemp4.mp3 -i ztemp3.mp4 output.mp4
@rem 
@rem "Удаляем промежуточные файлы"
if exist ztemp*.mp4 del /Q ztemp*.mp4
@rem 
:END
[свернуть]

Сноски   [ + ]

1. FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах.
2. ImageMagick — кроссплатформенный консольный редактор изображений, а точнее набор консольных программ.
3. «Любезный Синичкин, убей Бог мою душу, я уже надобности в женщинах не имею. У меня многие даром служат» (содержатель театра Пустославцев, х/ф «Лев Гурыч Синичкин»)