суббота, 10 августа 2024 г.

Linux mint & GPG local cache

 Обратил внимание, при шифровании файла gpg в Linux Mint, в случае проверки, файл сразу распаковывается, парольную фразу указывать не нужно.


Оказывается, по умолчанию, система хранит парольную фразу в кеше. 
https://forums.linuxmint.com/viewtopic.php?t=254042

https://forums.linuxmint.com/viewtopic.php?t=342802

Некоторые предлагают установить дополнительно агента gpg-agent, но, похоже, существует альтернативное решение в виде надстройки dconf-editor.

Вызвав эту надстройку, в поле поиска можно ввести 
default-cache


и установить новое значение в секундах.

вторник, 22 ноября 2022 г.

пятница, 28 октября 2022 г.

Linux / How to view huge installed package / Mint / Ubintu

 Захотелось поставить LaTeX. Не спрашивайте, зачем.

В кратких мануалах по установке приводятся два этапа - установка пакета 
texlive-full и после этого - установка непосредственно редактора, например, Texmaker.


Посмотрел по зависимостям - для установки texlive-full нужно около 5 гигабайт!

Need to get 2 722 MB of archives.

After this operation, 5 035 MB of additional disk space will be used.

Do you want to continue? [Y/n] 


Там много достаточно весомых пакетов.



 

Призадумался.

Возник вопрос - а вообще - сколько занимают уже установленные пакеты в моей рабочей системе? Как и всегда, этот вопрос раньше уже приходил кому-то в голову.

Одно из решений, работающее для меня:

$ dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr

Здесь - обратная сортировка, т.е. самые емкие пакеты будут отображаться первыми.


суббота, 8 мая 2021 г.

OnePlus X - new Ressurection Remix ROM with GAPPS install

 Подарил свой старый телефон OnePlus X дочери. 

Возник вопрос - как сбросить все настройки? Можно было бы конечно удалить свои аккаунты и завести ее акаунт.


Но я решил перепрошить устройство, так гарантированно уничтожатся данные на внутреннем хранилище и флеш карте.


Долго не получалось прошить, сделал в итоге через TWRP Advanced - ADB Sideload. До этого конечно нужно чтобы телефон был доступен через adb, перед сбросом настроил девелоперский режим, проверил что есть подключение.

adb devices

Ну а потом - на смартфоне включил ADB Sideload, а на компьютере дал команду

adb sideload ROM.zip

adb sideload gapps.zip 


Для 7 версии RR нужны gapps 9.

вторник, 18 августа 2020 г.

Как с помощью FFMPEG развернуть видео без перекодирования

Всем - здравствуйте!


Прислали недавно видео, которое по всей видимости снимали на телефон и при самом начале съемки развернули с портретного режима в горизонтальный.

При проигрывании файла, видео получается развернуто на 90 градусов.

Для нормального проигрывания видео нужно его развернуть. Как это сделать? На помощь приходит удивительная утилита - комбайн - FFMPEG. 


Для выравнивания видео выполним команду:


ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4 


Следует заметить, что эта команда не перекодирует файл, а значит, во-первых не теряется качество, во-вторых преобразование происходит очень быстро.

суббота, 13 июня 2020 г.

FFMPEG - как изменить громкость видео без перекодирования

Всем доброго дня!


Недавно возник новый вопрос.

Часто присылают видео файлы с очень разным качеством и видео и аудио. В основном я обрабатываю видео так, чтобы подготовить файлы к загрузке на YouTube. Для этого приходится понижать битрейт например с 20000 кб/с до 2500 кб/с.

Однако, подчас поступают файлы с очень низким уровнем записи звука. Что же можно предпринять?

Как обычно, вновь выручает комбайн - утилита FFMPEG. Похоже, она умеет всё. Всё что только возможно сделать с видео и аудио. И, похоже, она работает с любыми контейнерами.



Повышение уровня аудио


Итак, как же повысить уровень аудио дорожки в  видео файле?

Вот так:

ffmpeg -i $INPUT_FILE -vcodec copy -af "volume=10dB" $OUTPUT_FILE

Если же нужно понизить уровень аудио в видео файле, тогда можно сделать вот так:

ffmpeg -i $INPUT_FILE -vcodec copy -af "volume=-10dB" $OUTPUT_FILE

Рецепт, как обычно, найден на просторах Интернет, вот здесь.

Однако, и на оффсайте есть нужная информация.




Нормализация


Ещё более интересным представляется процесс нормализации звуковых дорожек файлов.

Вначале предлагается проанализировать файл:


ffmpeg -i video.avi -af "volumedetect" -vn -sn -dn -f null /dev/null

с примерно таким выводом:

[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] mean_volume: -16.0 dB
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] max_volume: -5.0 dB
[Parsed_volumedetect_0 @ 0x7f8ba1c121a0] histogram_0db: 87861

Здесь максимальный уровень -5.0 dB, значит нормализация должна быть 5 dB.

Обычный аудио файл
ffmpeg -i input.wav -af "volume=5dB" output.mp3

AVI формат (обычно с mp3)
ffmpeg -i video.avi -af "volume=5dB" -c:v copy -c:a libmp3lame -q:a 2 output.avi

MP4 файл
ffmpeg -i video.mp4 -af "volume=5dB" -c:v copy -c:a aac -b:a 192k output.mp4


О нормализации написано здесь и здесь.


воскресенье, 17 мая 2020 г.

Сканирование изображений в Linux



В последней версии simple-scan изображения сохраняются в формате PDF и нет опции, чтобы сохранять в формате PNG или JPEG.

Как пишут, эта особенность зашита в коде simple-scan и её изменить нельзя, если, конечно, вы не мэйнтейнер этого пакета.

Что же делать?


Я вижу два варианта:

  1. Вместо программы simple-scan использовать xsane. Это достаточно мощный комбайн, там есть возможность сохранять отсканированные изображения в разных форматах.
  2. Использовать simple-scan, сохраняя отсканированные файлы в формате PDF, а затем с помощью утилиты imagemagick переконвертировать pdf в png.
    Сделать это можно после установки пакета imagemagick

    sudo apt install imagemagick

    командой

    convert file.pdf file.png


    Хорошо об этом написано здесь

вторник, 12 мая 2020 г.

Как записать видео с камеры SONY miniDV на компьютер с Linux




В процессе работы с трансляциями и записью в программе OBS Studio возник у меня вопрос - есть ли возможность использовать для записи и стриминга не встроенную камеру ноутбука, а внешнюю камеру.

Из внешних камер попробовал использовать камеру SONY miniDV.

Эта камера подключается к компьютеру по i-Link, или, как ещё называют этот интерфейс во всём остальном мире кроме Японии, по FireWire IEEE 1394.

После подключения камеры к компьютеру, устройство без проблем было опознано в операционной системе. Я использую ядро 5.3.0-51-generic в своей системе.


Однако, не сразу получилось разобраться, как сохранить видеопоток на компьютер.


Через определённое время решения были найдены.
Для сохранения видеопотока можно воспользоваться утилитой

dvgrab

например с такими параметрами:

dvgrab --autosplit --timestamp somefilename-

как описано на этом сайте.

Даже без параметров эта утилита сохраняет видеопоток на компьютер с именем dvgrab-001.dv.



Второй вариант который я нашёл и протестировал - использование приложения KiNO. Тут всё просто - устанавливается KiNO и производится захват видео.


Что же делать дальше с записанным файлом (файлами)?

Поскольку я работаю с видео файлами в формате MP4, я решил конвертировать DV видео файлы именно в формат MP4.

Простой вариант:

ffmpeg -i my_video.dv -vf yadif output.mp4

Вот два сайта, где можно почерпнуть другие варианты, которые подходят именно для вас:

Converting miniDV movies into MP4

и

Import old DV videos to your computer (Linux)


Стоит обратить на них внимание.



Возвращаясь к вопросу в начале. Настроить внешнюю камеру для OBS Studio у меня не получилось. Похоже, OBS Studio не работает с такими источниками, которые подключаются по FireWire.









суббота, 2 мая 2020 г.

Как соединить два файла MP4 с помощью FFMPEG


При подготовке снятого с помощью смартфона видео в формат для YouTube пришлось столкнуться не только с вопросом понижения битрейта результирующего файла, но и с вопросом конкатенации двух объемных видео файлов.

Система Android имеет ограничения на размер создаваемого файла в 4 Гб. И, например, при записи видео с параметрами 4K - разрешение, 30fps - фреймрейт, 48Mbps - битрейт, через примерно 12 минут размер файла превысит 4 Гб. После этого приложение для видеозаписи сохранит видео файл с соответствующим именем в файловой системе, и откроет другой файл для записи - без информирования пользователя об этих процессах.

Также нужно отметить, что Android не предоставляет (пока) встроенного инструмента для "склеивания" файлов более 4 Гб и для этого приходится использовать сторонние приложения.


В моём случае для "склеивания" двух объёмных видео файлов я использую кроссплатформенную утилиту FFMPEG.


Последовательность действий для файлов формата MP4 такая:

  1. Сохранить видео файлы на компьютер. Удобнее и быстрее всего это делать подключив смартфон по USB к компьютеру, после чего выбрать в настройках подключения USB передачу файлов.
  2. Открыть терминал и перейти в каталог с загруженными видео файлами.
  3. Для удобства просмотра и редактирования команды, выведем листинг файлов в каталоге:

    ls -la
  4. Выполним одну за другой команды для создания промежуточных файлов:

    ffmpeg -i input-1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
    ffmpeg -i input-2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts


    где input-1.mp4 и input-2.mp4 - входные видео файлы, а intermediate1.ts и intermediate2.ts - промежуточные файлы.
  5. Выполним команду конкатенации (склеивания, слияния) двух файлов:

    ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output.mp4


    где output.mp4 - результирующий файл.


Несколько замечаний:
  • Файловая система на вашем компьютере должна поддерживать объекты более 4 Гб. Современные файловые системы поддерживают создание таких объектов.
  • Нежелательно проводить перед конкатенацией другие операции над файлами. Это лучше сделать после создания результирующего файла. В противном случае вы можете получить рассинхронизированный результирующий файл.
  • В версии Android 11 ограничение в 4 Гб на размер создаваемого файла будет снято. 32 битная архитектура будет заменена 64 битной. Во время тестирования был успешно создан файл размером около 32 Гб.
  • При работе утилиты FFMPEG достаточно сильно нагружаются ресурсы компьютера. Загрузка CPU приближается к 100%. На ноутбуке это приводит к долговременному нагреву CPU до температуры около 83 градусов, при этом охлаждающий процессор кулер работает на оборотах примерно в 3000 RPM. Чтобы избежать нагрузки на CPU можно применить флаг -threads, например -threads 2, в таком случае, если вы имеете 8 тредов, задействованы будут 2.




Основная информация была взята с сайта Стэковерфлоу.


пятница, 24 апреля 2020 г.

Как уменьшить размер видеофайла MP4 изменив битрейт оригинального файла с помощью ffmpeg

Во время самоизоляции потребовалось записать несколько видео. Запись велась на камеру смартфона в формате MP4 с параметрами HD 720p, 30fps. Файл получился достаточно большой - 1 Гб.

С одной стороны, это хорошо. Качество не теряется, картинка чёткая, всё хорошо.

С другой стороны - такой файл мало пригоден для трансляции в веб, например через YouTube. Проблема даже не в качестве 720p, а в большом битрейте. Битрейт результирующего файла оказался выше 14000 kbps, в то время когда рекомендованный для стрима в YouTube битрейт составляет всего от 1500 до 4000 kbps.


Возникает вопрос - что делать, как понизить битрейт у видео, так, чтобы и качество не слишком пострадало и синхронизация с аудиодорожкой была как в исходном видео?

Поскольку я работаю в Linux, решение стал искать под эту платформу. 

Для решения этой задачи можно воспользоваться мощным инструментом - программой (утилитой) ffmpeg. Эта утилита доступна и под Windows и под Mac также.


Поиск в Интернет привёл на широко известный сайт.

Там указан рецепт - что нужно делать, и почему именно так.

Вкратце - команда для уменьшения размера исходного файла выглядит так:

ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4

Пишут, что в 2020 есть новая опция вместо libx254 - libx265 и с ней нужные параметры. Я воспользовался вышеприведённой командой и в результате получил файл почти такого же качества с битрейтом 3914 kbps и размером вместо 1Гб всего 300Мб.

В этом случае команда будет выглядеть вот так

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4


где

input.mp4 - входящий (исходный) файл
libx265 - библиотека обработки
crf - constant rate factor, при значении 23 даёт качество близкое к формату DVD, а понижение значения этого параметра вызовет увеличение качества файла и, соответственно, увеличение результирующего размера.
output.mp4 - результирующий файл


При значении crf=28 из файла размером 3,5 Гб результрующий файл получился размером 122 Мб с битрейтом 356 kbps.
При значении crf=23 из файла размером 3,5 Гб результрующий файл получился размером 255 Мб с битрейтом 894 kbps.
При значении crf=20 из файла размером 3,5 Гб результрующий файл получился размером 435 Мб с битрейтом 1620 kbps.

Все файлы разрешением 1280х720.

Исходя из вышеприведённой таблицы с Гугл, меня устроил вариант со значением crf=20.

Стоит заметить, что на этой же странице стэкексчейнджа есть ещё один рецепт для пережатия видео под формат мобильных устройств с рескейлингом. 

В общем - велкам!

пятница, 7 февраля 2020 г.

How to setup VirtualBox network for host and guest systems

This were found at ServerFault:


  1. Setup the virtualbox to use 2 adapters:
    • The first adapter is set to NAT (that will give you the internet connection).
    • The second adapter is set to host only.
  2. Start the virtual machine and assign a static IP for the second adapter in Ubuntu (for instance 192.168.56.56). The host Windows will have 192.168.56.1 as IP for the internal network (VirtualBox Host-Only Network is the name in network connections in Windows). What this will give you is being able to access the apache server on ubuntu, from windows, by going to 192.168.56.56. Also, Ubuntu will have internet access, since the first adapter (set to NAT) will take care of that.
  3. Now, to make the connection available both ways (accessing the windows host from the ubuntu guest) there's still one more step to be performed. Windows will automatically add the virtualbox host-only network to the list of public networks and that cannot be changed. This entails that the firewall will prevent proper access.
  4. To overcome this and not make any security breaches in your setup:
    • go to the windows firewall section, in control panel,
    • click on advanced settings. In the page that pops up,
    • click on inbound rules (left column), then on new rule (right column). Chose custom rule, set the rule to allow all programs, and any protocol. For the scope, add in the first box (local IP addresses) 192.168.56.1, and in the second box (remote IP) 192.168.56.56. Click next, select allow the connection, next, check all profiles, next, give it a name and save.
That's it, now you have 2 way communication, with apache/any other service available as well as internet. The final step is to setup a share. Do not use the shared folders feature in virtualbox, it's quite buggy especially with windows 7 (and 64 bit). Instead use samba shares - fast and efficient.


In my case - I use Linux system as a host an as a guest systems. 
For Ubuntu 18.04 LTS server we need to use "netplan" utility as describe here.
Make edit file and add new section for new interface:
/etc/netplan/50-cloud-init.yaml
And after editing we need to save configuration and reload network config:

sudo netplan apply
enp0s8:    
      dhcp4: no
      dhcp6: no
      addresses: [192.168.56.110/24, ]
      gateway4:  192.168.56.1
      nameservers:
              addresses: [8.8.8.8, 8.8.4.4]

среда, 5 февраля 2020 г.

How to install Virtualbox extension pack on Linux host by CLI


  1. Install Virtualbox
  2. Download extension pack (for the installed version of Virtualbox)
  3. Make VM (in my case - Ubuntu LTS server)
  4. From VM menu:
    - Devices -> Insert Guest Addition CD Image
  5. If it does error, do this in Guest System:
    sudo apt install build-essential dkms
  6. Do this:
    mount /dev/cdrom /mnt
    cd /mnt
    sudo ./VBoxLinuxAdditions.run
    reboot
  7. cd
  8. umount /mnt
  9. Devices -> Optical Drive -> Remove disk from optical drive
  10. Remove Extension Pack from Host system:
    rm ~/.config/VirtualBox/VboxGuestAdditions_XX.iso
  11. Remove Guest Additions:
    cd /opt//
    sudo ./uninstall.sh