пятница, 22 ноября 2024 г.

Obsidian sinc with GitHub

 Инструкция пошаговая довольно понятная - тут https://habr.com/ru/articles/843288/.

А здесь - добавление по настройке Obsidian to Git over Proxy - https://gist.github.com/evantoli/f8c23a37eb3558ab8765



Теперь - репозиторий на GitHub синхронизируется с рабочим Obsidian!

суббота, 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


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

пятница, 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

четверг, 12 декабря 2019 г.

My application list for Linux

Мой список приложений для Linux


После установки Linux с дистрибутива, обычно я использую Linux Mint, необходимо привести систему в рабочее состояние. То есть дополнить необходимыми и желательными программами для работы. Вот мой дополняемый список:

  1. LibreOffice
  2. Mosh
  3. Tor
  4. KeePass2
  5. CherryTree
  6. TrueCrypt
  7. Shatter
  8. VLC
  9. Android-Studio
  10. Keybase
  11. VPNUnlimited
  12. ThunderBird
  13. VirtualBox
  14. KVM
  15. SublimeText
  16. Telegram
  17. Gramps
  18. TimeShift
  19. Bleachbit
  20. Anki
  21. XMind
  22. Xiphos
  23. Dropbox
  24. Redshift
  25. Bitdefender
  26. Audacity
  27. Blender
  28. GIMP



пятница, 25 октября 2019 г.

Remote connect to Linux Mint by RDP

Иногда возникает необходимость подключиться к удаленной системе, работающей на Linux Mint.

Вариантов несколько - SSH с консолью и пробросом графики, VNC, TeamViewer, и RDP.

В зависимости от задач и возможностей (открытые порты и настройки), можно воспользоваться вышеуказанными приложениями и протоколами.



Читая недавно статью на Хабре по переходу разработчика с Windows на Linux, обратил внимание на рецепт подключения к удаленному хосту с Linux Mint по RDP.
Привожу его здесь.

После настройки программ на рабочей машине встал вопрос настройки удаленных сеансов.
В силу ограничений офисного файрвола vnc использовать было нельзя т.к. порт 5900 был закрыт, а проверять другие какие доступны было лениво. Коллеги подсказали, что можно использовать xrdp, который работает на стандартом rdp порте и подключаться к нему можно с любого клиента: хоть на windows машинах, хоть на Linux. Но как выяснилось не все так безоблачно. При попытке входа в rdp я видел только черный экран после ввода своих учетных данных в окне авторизации. Каким-то чудом на форуме минта был обнаружен рецепт для исправления этой ситуации, привожу его тут, может кому пригодится тоже (я использую оконный менеджер xfce, поэтому и рецепт соответствующий, можно заменить на любой другой какой вы используете у себя):

echo "env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS xfce4-session" > ~/.xsession

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


пятница, 11 октября 2019 г.

Как мониторить SMART и выводить результат в Telegram

Решая свою задачу обнаружил интересный пример на Реддите.

SMART Info w/ Telegram Notifications [Linux]

Yesterday I asked how to get warnings of failing drives on Debian 8.8 Today I woke up to some very helpful comments that I'd like to stitch together for all of you to easily enable your server "speaking" capabilities. (Easier to learn it to speak than asking it through the terminal "How you doin?")
  • Installed smartmontools
  • Check all disks are SMART enabled:
    df -h
    sudo smartctl --info /dev/ | grep 'SMART support is:'
  • Create a new telegram bot via the botfather (see https://core.telegram.org/bots#3-how-do-i-create-a-bot). You will need the token of the bot from botfather.
  • I suggest download and installing Postman. A very powerful free API tool. Postman
  • Initiate a chat with your new bot.
  • Open Postman and send a GET to https://api.telegram.org/bot{YOUR_TOKEN}/getUpdates. You will need the chat id called "id": xxxxxx. This ID-number is shown several times in the return JSON file.
  • Open the file /etc/default/smartmontools
  • uncomment the lines
start_smartd=yes smartd_opts="--interval=1800"
  • In the file /etc/smartd.conf use the first example that might be uncommented already and change it to
DEVICESCAN -d removable -n standby -m root -M test -M exec /usr/share/smartmontools/smartd-runner
  • Create a bash file in the folder /etc/smartmontools/run.d called 10telegram-notify and fill in this content (replace token and chat id):
#!/bin/bash -e
chatid="YOUR_CHAT_ID"
error=$(cat $1)
apikey="YOUR_BOT_TOKEN"
curl -G --data-urlencode "chat_id=${chatid}" --data-urlencode "text=${error}" https://api.telegram.org/bot${apikey}/sendMessage
  • Make the file executable: sudo chmod +x /etc/smartmontools/run.d/10telegram-notify
  • Start the daemon sudo smartd. You should be receiving a test message in the chat with your bot. If not, you can investigate the error with sudo cat /var/log/syslog
  • Remove the -M test from your /etc/smartd.conf file, so that the line looks like this now: DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner
  • Finished :)

How to record sound by Linux application

Время от времени на окне на работе поют птички. Подумалось - как бы записать их пение в автоматическом режиме с использованием Linux?

Нашлось несколько вариантов:


Буду тестировать!

среда, 7 августа 2019 г.

Как запустить несколько аккаунтов Telegram Desktop в Linux


В чём проблема?

Приложение Telegram для Linux распространяется бинарным файлом. Файл запускается, указывается аккаунт при начальной настройке, осуществляется привязка к аккаунту и дальше можно работать с приложением. 
Однако, в настройках десктоп приложения отсутствует возможность добавить второй (третий и так далее) аккаунт.

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

Решение следующее:
  1. Создать папку (каталог) с любым именем, в любом месте. Например:
    mkdir ~/my2ndaccount
  2. После этого нужно перейти в каталог с приложением. Например так:
    cd ~/Download/Telegram
    (если Телеграм загружен в каталог Download)
  3. Завершающий этап - запуск приложения:
    ./Telegram -many -workdir /home/user/my2ndaccount
В своей системе на базе Linux Mint я сделал копию кнопки приложения Telegram и поместил ее на верхнюю панель. Параметры кнопки выглядят вот так:
Add caption


пятница, 12 апреля 2019 г.

Linux + ntpd

На работе был время вначале брал с внутреннего сервера. Расхождение достигало около 21 секунд.
Многовато.

Сконфигурировал /etc/ntp.conf с немецкими серверами и помогла вот этот набор команд:

sudo service ntp stop
sudo ntpd -gq
sudo service ntp start


Потом проверил что всё работает правильно:

sudo ntpq -p


Ну и можно ещё так проверить - через веб.

Чем ntpdate отличается от ntpd - читать самостоятельно.

вторник, 2 апреля 2019 г.

Как синхронизировать календарь Mozilla Lightning с помощью Dropbox


Для рабочих целей использую Thunderbird на разных компьютерах.

Кроме основного календаря который у меня привязан к аккаунту Гугл есть ещё рабочая почта с рабочим календарём. И подумалось мне синхронизировать рабочий календарь - так, чтобы с любого компьютера можно было видеть список задач, событий в Lightning.


Сделать решил через облачный сервис Dropbox.


  1. Экспортировал текущий календарь в файл work.ics в каталог на Dropbox
  2. Удалил текущий календарь
  3. Создал новый календарь - как сетевой файл. В качестве пути к файлу указал путь к подготовленному файлу на Dropbox. Кроме Unix пути к файлу нужно в адресе указать тип сетевого протокола. В данном случае я использовал примерно так:
    "file:///home/myname/dropbox/calendar/work.ics"
  4. Проверил импортированные сообщения, всё работает.
Теперь можно из дома не только рабочую почту получать но и иметь информацию о событиях планах и задачах из рабочего календаря.