Termux и FFMPEG

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) мы получим удовлетворяющее нас качество сжатия.

Я этот эксперимент проводить не стал. Мне стало жалко дискового пространства и процессорного времени моего телефона. Ну, а кому не жалко всего выше перечисленного, плюс любопытно и нехер делать, то можно попробовать.

НАШИ ПРОЕКТЫ


Report Page