Пакетное сжатие видео с помощью ffmpeg

У меня много видео в папке, и я хочу сжать их все одной командой.

Для сжатия одного видео я использую:

sudo apt-get install ffmpeg
ffmpeg -i input.mp4 output.mp4

Но что, если у меня есть много видео, которые я хочу сжать? Я пробовал следующее:

ffmpeg -i ./videos ./compressed-videos

Но потом я получаю эту ошибку:

./videos: Is a directory
1
задан 10 September 2019 в 19:10

1 ответ

Я использовал бы удар for цикл с этой целью - позволяет нам предположить, что Вы находитесь в родительском каталоге, который содержит каталоги videos/ и compressed/:

for f in videos/*mp4; do ffmpeg -i "$f" "compressed/${f##*/}"; done

Или если Вы хотите преобразовать какой-либо тип видеофайла к mkv, можно использовать:

for f in videos/*; do ffmpeg -i "$f" "compressed/$(basename "${f%.*}").mkv"; done

В вышеупомянутых примерах:

  • ${var##*/} будут выводы все символы после последней наклонной черты /, таким образом, только имя файла без пути будет оставаться;
  • ${f%.*} будут выводы все символы перед последней точкой, таким образом, путь и имя файла будут сохранены, но расширение файла будет удалено. Затем замена команды $(basename "/path/name") будут выводы только имя без пути.

Ссылки:

1
ответ дан 7 December 2019 в 14:58

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

Похожие вопросы: