Поварёная книга Linux-программиста
Table of Contents
Здесь я выкладываю разные полезные советы по работе с Linux.
Сжатие изображений в Linux#
Для уменьшения качества изображений нам понадобится программа mogrify, входящая в состав ImageMagick — набора программ для работы с графикой из консоли.
Пример синтаксиса:
mogrify -resize 1920x -path /путь/к/выходной_папке *.jpg
где:
-resize 1920x — новая ширина, равная 1920 пикселей, высота меняется пропорционально
-path — путь, куда положить обработанные изображения (лучше не перезаписывать оригиналы)
Также можно еще указывать качество параметром -quality (от 0 (худшее) до 100 (лучшее)). Допустим, нам нужно уменьшить качество всех JPEG (считаем, что качество изначальных изображений высокое) в текущей папке. Для этого создадим папку small (чтобы не перезаписать исходники) и выполним следующую команду:
$ mkdir small
$ mogrify -resize 1920x -quality 80 -path ./small ./*.jpg
В результате получим в папке small изображения с шириной 1920, меньшего качества.
Массовая рекурсивная конвертация всех аудиофайлов в корневой директории в формат .mp3#
- Создаём следующий bash-скрипт (например, convert_audio_to_mp3.sh) где-нибудь в директории, в которой находятся аудиофайлы:
find /mnt/storage/04_Media/Music -type f \( -iname "*.flac" -o -iname "*.wav" -o -iname "*.ogg" -o -iname "*.aac" \) \
-exec bash -c 'for f; do
out="${f%.*}.mp3"
ffmpeg -y -i "$f" -q:a 2 "$out" && rm "$f"
done' bash {} +
- Даём права на выполнение:
sudo chmod +x ./convert_audio_to_mp3.sh
- Запускаем bash-скрипт:
$ ./convert_audio_to_mp3.sh
Что делает этот скрипт:
- Находит рекурсивно все файлы в директориях с форматом из первой строки (можно добавить еще)
- Запускает ffmpeg для каждого найденного файла (формат .mp3, качество 2 (где 0 - наилучшее, а 9 - наихудшее))
- Удаляет исходные файлы по завершению конвертации!!! Если Вам это не нужно, удалите фрагмент
&& rm "$f"из скрипта.
То же самое, но для видео:
find /mnt/storage/04_Media/Videos -type f \( -iname "*.mkv" -o -iname "*.avi" -o -iname "*.mp4" \) \
-exec bash -c 'for f; do
ffmpeg -i "$f" -vf scale=-1:720 -c:v libx265 -crf 28 -c:a aac -b:a 128k "${f%.*}_720p.mp4" && rm "$f"
done' bash {} +
И не забудьте удалить && rm "$f", если Вам не нужно стирать исходники!