Termux и FFMPEG
Termux, please
Всем привет, на просторах интернета я нашел очень интересную и полезную статью. Приятного чтения.

Купил недавно новый телефон. Старый не фурычит. Выбор пал на POCO X3 Pro. Машина могучая: ОЗУ 8 Гб, проц восьмиядерный с частотой 3 ГГц. Первым делом всегда идет настройка новой вещи, её освоение. Я не исключение) На чем тестировать новый телефон? Ответ очевиден — сжатие видео. Заодно сравним возможности сжатия, которые встроены в телефон производителем, и те, которые мы можем установить и использовать самостоятельно. Я выбрал библиотеку ffmpeg, которая работает через Termux — эмулятор командной строки Linux в Android.
Приступаем:)
Исследуемый пациент — видео, которое снял накануне:

Что мы о нем знаем?

Xiaomi (встроенное средство)
Задача ясна, необходимо сжать исходный файл сэкономив при этом часть дискового пространства. Как это делается встроенными средствами? Все очень просто. Надо нажать на троеточие в маленьком кружочке. Эта иконка расположена внизу справа при просмотре файла в Галерее. После чего вылетает контекстное меню, в нем выбираем пункт «Сжать видео». Видим следующий диалог, в котором выбираем пункт «1080p»:

Разрабы обещают сократить размер файла с 462 Мб до 231 Мб, т.е. вдвое. Не хило) Выбираем требуемое качество и ждем:

В результате будем иметь:

Замечательно! Старый файл можно удалить и радоваться свободному месту в 230 мегабайт)
Но давайте проверим, как сжимает не встроенное средство.
Termux & ffmpeg
Для начала необходимо установить ffmpeg. Делается это просто:
~$ pkg install ffmpeg
После чего библиотека в нашем распоряжении. Как ею пользоваться? Можно почитать справку командой
~$ ffmpeg --help
а можно вколотить запрос в поиск гугла и он кинет нам ссылку на статью на Хабре: https://habr.com/ru/post/333664/
Делаем по инструкции, как там написано:

С первого раза не всегда получается) Уровень качества выходного потока — указано значение «q:v 4». Этот параметр может изменяться от 1 до 31, где 1 — наилучшее качество, а 31 - наихудшее. Я выбрал 4, посмотрим что получится. Жмем Enter, и понеслась:

Пережатие идет дольше, чем встроенным средством. Что в итоге?

Файл размером 1,6 гигов))) Свойства его таковы:

Как то так :$
Что можно с этим сделать? Поиграть настройками выходного файла. Самое примитивное снизить качество. Еще можно заменить контейнер с avi на mp4.
Как уменьшить качество? Точнее до какого значение его снижать, чтобы произошло именно сжатие и размер выходного файла был сопоставим с тем, что выдает встроенное средство? Пишем скрипт)))
#!/bin/bash
for ((i = 1; i <= 31; i++))
do
ffmpeg -i VID_20220424_150655.mp4 q:v $i $(printf "output_%0.3d.mp4" $i)
done
Запускаем, а дальше командой «ls -lah *.mp4» смотрим при каком уровне качества (параметр q:v $i) мы получим удовлетворяющее нас качество сжатия.
Я этот эксперимент проводить не стал. Мне стало жалко дискового пространства и процессорного времени моего телефона. Ну, а кому не жалко всего выше перечисленного, плюс любопытно и нехер делать, то можно попробовать.

- 📺 UnderMind - Наш YouTube канал
- ✅ [YT]UnderMind - Наш основной TG канал
- 🏴☠️ https://t.me/under_private - Приватный канал
- 🛒 HackAli - cамые интересные хакерские товары с Aliexpress!
- 👨💻 Termux, please - 100% termux
- 📱 Android, please - от APK до мануалов
- 🐧 Linux, please - всё о Linux
- 💭 https://t.me/UnderChats - Чат
- ⚡️ Мы в Yandex.Zen - Лучший контент со всех наших каналов