У меня много видео в папке, и я хочу сжать их все одной командой.
Для сжатия одного видео я использую:
sudo apt-get install ffmpeg
ffmpeg -i input.mp4 output.mp4
Но что, если у меня есть много видео, которые я хочу сжать? Я пробовал следующее:
ffmpeg -i ./videos ./compressed-videos
Но потом я получаю эту ошибку:
./videos: Is a directory
Я использовал бы удар 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")
будут выводы только имя без пути.Ссылки: