Как конвертировать весь каталог / папку с помощью ffmpeg через командную строку или с помощью пакетного скрипта?
ffmpeg
batch-processing
Евгений
источник
источник
i was unexpected at this time.
do name=`echo "${i%.*}"`;
будет работать с именами файлов с точками (и пробелами) в них..bat
в Windows?Для Linux и macOS это можно сделать в одну строку, используя расширение параметра, чтобы изменить расширение имени файла выходного файла:
источник
ffmpeg
не можете вводить и выводить в один и тот же файл. 2) Я не уверен, что команды Bash работают на Windows 10 изначально. Возможно, я должен добавить к ответу, что он нацелен на системы, которые могут использовать Bash, такие как Linux и macOS. LXS предоставил ответ Windows на этот вопрос.for f in *.mkv; do ffmpeg -i "$f" -map 0 -movflags faststart -c:v libx264 -c:a copy -c:s copy "${f/x265/x264}"; done
И на Windows:
источник
FOR /F "tokens=*" %G IN ('dir /b *.mp3') DO ffmpeg -i "%G" -map_metadata -1 -c:v copy -c:a copy "%~nG .mp3"
Легко сделать однострочный сценарий bash - замените его
*.avi
типом файла:источник
-qscale
. Удалите его и используйте настройки по умолчанию или используйте-crf
вместо него (по умолчанию это-crf 23
).basename
подоболочка с обратным символом не заключена в кавычки . Именно поэтому bash имеет расширение оболочки: для i в * .avi; do ffmpeg -i "$ i" -qscale 0 "$ (базовое имя" $ i ".avi)". mov; сделаноДля преобразования с подкаталогами используйте, например,
источник
find -name "*.vtt" -exec ffmpeg -i {} {}.srt \;
find *.mp4 -exec ffmpeg -i {} {}.mp3 \;
find . -name *.ogg -or -name *.wma -exec ffmpeg -i {} {}.mp3 \;
find . -name *.wma -exec ffmpeg -i {} {}.mp3 \; -exec rm {} \;
Для Windows:
Здесь я конвертирую все (.mp4) файлы в (.mp3) файлы.
Просто откройте cmd, перейдите в нужную папку и введите команду.
Ярлык: (необязательно)
1. Перейдите в папку, где находятся ваши файлы (.mp4)
2. Нажмите Shift и щелкните левой кнопкой мыши и выберите «Открыть окно PowerShell здесь»
или «Открыть окно командной строки здесь»
3. Введите «cmd» [ПРИМЕЧАНИЕ. : Пропустите этот шаг, если он непосредственно открывает cmd вместо PowerShell]
4. Запустите команду
Если вы хотите поместить это в командный файл в Windows 10, вам нужно использовать %% i.
источник
Для тех, кто хочет что-то пакетно конвертировать с помощью ffmpeg, но хотел бы иметь удобный интерфейс Windows, я разработал этот интерфейс:
https://sourceforge.net/projects/ffmpeg-batch
Он добавляет в ffmpeg интерфейс моды окна, индикаторы выполнения и оставшееся время, функции, которые я всегда упускал при использовании ffmpeg.
источник
Если у вас есть GNU параллельно, вы можете конвертировать все файлы .avi ниже
vid_dir
в mp4 параллельно, используя все, кроме одного из ваших процессорных ядер сЧтобы конвертировать из / в разные форматы, измените
'*.avi'
или по.mp4
мере необходимости. Параллель GNU указана в большинстве репозиториев дистрибутивов Linux в пакете, который обычно называетсяparallel
.источник
!
в конец одну из строк строки bash?Я знаю, что это может быть избыточно, но я использую этот скрипт для пакетного преобразования файлов.
Требуется 2 аргумента, чтобы сделать его более гибким:
Я создаю для него псевдоним, но вы также можете использовать его вручную следующим образом:
Это конвертирует все
mkv
файлы вmp4
файлы.Как видите, он немного более универсален. Пока вы
ffmpeg
можете конвертировать его, вы можете указать любые два расширения.источник
Это немного похоже на Code Golf, но так как почти все ответы пока что bash (за исключением одного одиночного cmd), вот кроссплатформенная команда
windows,которая использует powershell (потому что это здорово):Вы можете изменить * .avi на то, что соответствует исходному материалу.
источник
Конечно, в настоящее время PowerShell пришел вместе, специально разработан , чтобы сделать что - то точно , как это очень легко.
И да, PowerShell также доступен в других операционных системах, кроме Windows, но он предустановлен в Windows, так что это должно быть полезно для всех.
Сначала вы захотите перечислить все файлы в текущем каталоге, поэтому мы начнем с:
Вы также можете использовать,
ls -Recurse
если вы хотите рекурсивно конвертировать все файлы в подкаталогах тоже.Затем мы отфильтруем их по типу файлов, которые мы хотим преобразовать, например, «avi».
После этого мы передадим эту информацию в FFmpeg через
ForEach
.Для ввода FFmpeg мы будем использовать
FullName
- это полный путь к файлу. А для вывода FFmpeg'овской библиотеки мы будем использоватьName
- но заменяя.avi
на конце.mp3
. Итак, это будет выглядеть примерно так:Итак, давайте соберем все это вместе, и вот результат:
Это преобразует все файлы ".avi" в файлы ".mp3" через FFmpeg, просто замените три кавычки, чтобы решить, какой тип преобразования вы хотите, и не стесняйтесь добавлять любые другие аргументы в FFmpeg в
ForEach
.Вы можете сделать еще один шаг и добавить
Remove-Item
в конец, чтобы автоматически удалять старые файлы.Если
ffmpeg
его нет в вашем пути, и он на самом деле находится в каталоге, в котором вы сейчас находитесь, пишите./ffmpeg
вместо простогоffmpeg
.Надеюсь, это кому-нибудь поможет.
источник
.ps1
файл, а не в.bat
файл. Вам придется работатьSet-ExecutionPolicy RemoteSigned
от имени администратора, если вы никогда ранее не запускали сценарий PS.Пакетная обработка
flac
файлов вmp3
(безопасно для имен файлов с пробелами) с использованием [1] [2]источник
окна:
это переменный битрейт качества 2, вы можете установить его на 0, если хотите, но если у вас нет действительно хорошей акустической системы, это бесполезно
источник
Если вам нужен графический интерфейс для пакетной обработки с помощью ffmpegX, попробуйте Quick Batcher . Это бесплатно и примет ваши последние настройки ffmpegX, чтобы конвертировать файлы, которые вы вставили в него.
Обратите внимание, что вы не можете перетаскивать папки на Quick Batcher. Так что выберите файлы и затем поместите их через Quick Batcher.
источник
Только этот работал для меня, пожалуйста, обратите внимание, что вам нужно вручную создать папку «newfiles», где находится файл ffmpeg.exe.
Конвертировать . файлы в .wav аудио код:
т.е. если вы хотите конвертировать все файлы .mp3 в .wav, измените
("*.*")
на("*.mp3")
.Автор этого сценария:
https://forum.videohelp.com/threads/356314-How-to-batch-convert-multiplex-any-files-with-ffmpeg
надеюсь, это помогло 🙏.
источник
Это создаст MP4 видео из всех файлов JPG из текущего каталога.
источник
И для Windows это не работает
даже если я удвою это
%
.Я бы даже предложил:
также:
источник
Это то, что я использую для пакетного конвертирования AVI в 1280x MP4
Хорошо работает как cmd-файл, запустите его, цикл найдет все avi-файлы в этой папке.
вызывает MY (смените на ваше) ffmpeg, передает имя ввода, настройки для изменения масштаба с резкостью. Мне не нужны CRF и "
-b:v 1024k
" ...Выходной файл - это входной файл минус расширение, с mp4 в качестве нового ext.
источник
Я использую эту однострочную версию в linux для преобразования файлов (обычно H265) в то, что я могу играть на Kodi без проблем:
Это преобразует во временный файл, а затем заменяет оригинальный, так что имена остаются неизменными после преобразования.
источник
Также, если вы хотите такое же преобразование в подпапках. вот рекурсивный код
источник
маленький скрипт php для этого:
источник
escapeshellarg()
, и работает как на Windows, так и на Linux. Я согласен, это крайний случай, хотя.Другое простое решение, которое еще не было предложено, заключается в использовании
xargs
:ls *.avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"
Одна небольшая ошибка - неудобное именование выходных файлов (например
input.avi.mp4
). Возможный обходной путь для этого может быть:ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4"
"источник
ls
сprintf '%s\n'
здесь.