Показаны сообщения с ярлыком Linux. Показать все сообщения
Показаны сообщения с ярлыком Linux. Показать все сообщения

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

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

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


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

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

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


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


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


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

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

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

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

четверг, 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



среда, 24 октября 2018 г.

how to work with systemd

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

Есть разница между SysVinit и Systemd.

Нашёл хорошее сравнение и описание команд:


Services

Note that all recent versions of systemctl assume the '.service' if left off. So, 'systemctl start frobozz.service' is the same as 'systemctl start frobozz'

Sysvinit CommandSystemd CommandNotes
service frobozz startsystemctl start frobozzUsed to start a service (not reboot persistent)
service frobozz stopsystemctl stop frobozzUsed to stop a service (not reboot persistent)
service frobozz restartsystemctl restart frobozzUsed to stop and then start a service
service frobozz reloadsystemctl reload frobozzWhen supported, reloads the config file without interrupting pending operations.
service frobozz condrestartsystemctl condrestart frobozzRestarts if the service is already running.
service frobozz statussystemctl status frobozzTells whether a service is currently running.
ls /etc/rc.d/init.d/systemctl (or) systemctl list-unit-files --type=service (or)
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
Used to list the services that can be started or stopped
Used to list all the services and other units
chkconfig frobozz onsystemctl enable frobozzTurn the service on, for start at next boot, or other trigger.
chkconfig frobozz offsystemctl disable frobozzTurn the service off for the next reboot, or any other trigger.
chkconfig frobozzsystemctl is-enabled frobozzUsed to check whether a service is configured to start or not in the current environment.
chkconfig --listsystemctl list-unit-files --type=service (or) ls /etc/systemd/system/*.wants/Print a table of services that lists which runlevels each is configured on or off
chkconfig --list | grep 5:onsystemctl list-dependencies graphical.targetPrint a table of services that will be started when booting into graphical mode
chkconfig frobozz --listls /etc/systemd/system/*.wants/frobozz.serviceUsed to list what levels this service is configured on or off
chkconfig frobozz --addsystemctl daemon-reloadUsed when you create a new service file or modify any configuration
Note that all /sbin/service and /sbin/chkconfig lines listed above continue to work on systemd, and will be translated to native equivalents as necessary. The only exception is chkconfig --list.

И ещё:

Runlevels/targets

Systemd has a concept of targets which serve a similar purpose as runlevels but act a little different. Each target is named instead of numbered and is intended to serve a specific purpose. Some targets are implemented by inheriting all of the services of another target and adding additional services to it. There are systemd targets that mimic the common sysvinit runlevels so you can still switch targets using the familiar telinit RUNLEVEL command. The runlevels that are assigned a specific purpose on vanilla Fedora installs; 0, 1, 3, 5, and 6; have a 1:1 mapping with a specific systemd target. Unfortunately, there's no good way to do the same for the user-defined runlevels like 2 and 4. If you make use of those it is suggested that you make a new named systemd target as /etc/systemd/system/$YOURTARGET that takes one of the existing runlevels as a base (you can look at /lib/systemd/system/graphical.target as an example), make a directory /etc/systemd/system/$YOURTARGET.wants, and then symlink the additional services that you want to enable into that directory. (The service unit files that you symlink live in /lib/systemd/system).
Sysvinit RunlevelSystemd TargetNotes
0runlevel0.target, poweroff.targetHalt the system.
1, s, singlerunlevel1.target, rescue.targetSingle user mode.
2, 4runlevel2.target, runlevel4.target, multi-user.targetUser-defined/Site-specific runlevels. By default, identical to 3.
3runlevel3.target, multi-user.targetMulti-user, non-graphical. Users can usually login via multiple consoles or via the network.
5runlevel5.target, graphical.targetMulti-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.
6runlevel6.target, reboot.targetReboot
emergencyemergency.targetEmergency shell
Changing runlevels:
Sysvinit CommandSystemd CommandNotes
telinit 3systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3)Change to multi-user run level.
sed s/^id:.*:initdefault:/id:3:initdefault:/ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.targetSet to use multi-user runlevel on next reboot.
Kernel Options:
The above systemd targets can be used when booting. At the GRUB menu, edit the selection to add "systemd.unit=target" (without the double-quotation marks) as a kernel option where target is one of the above. (For example, "rescue.target".)
Tip: the ".target" extention is optional. The "systemd.unit=rescue" kernel option works the same as "systemd.unit=rescue.target".

среда, 21 декабря 2016 г.

SQL Developer v. 4.1.5 и база данных Oracle 9.2.0.8

При работе SQL Developer последних версий (4.1.5) с базами данных Oracle версий 9.2.0.8 возникает ряд проблем.



  1. Для собственно подключения к БД нужен драйвер - Third Party JDBC Driver подходящий именно для 9-х версий Oracle. Драйвер можно найти на сайте Oracle и загрузить на компьютер. Имя драйвера ojdbc6.jar.
    После загрузки драйвера и указания пути к нему в конфигурационных параметрах, подключение к БД осуществляется.


  2. Некоторые объекты при этом остаются недоступными - таблицы, процедуры, триггеры и т.д. При попытке открыть эти объекты появляется сообщение об ошибке ORA-01460.


  3. Исправить можно следующим способом. С сайта Oracle нужно загрузить Instant Client версии 11. Например, "instantclient-basic-linux.x64-11.2.0.4.0.zip". После распаковки архива нужно указать в конфигурационных параметрах каталог, куда был распакован архив. Вот так.




  4. После этого все объекты базы данных открываются без ошибок.

пятница, 16 декабря 2016 г.

Gramps

Для запуска локализованного (русского) интерфейса программы Gramps в англоязычном окружении среды в Linux, следует использовать следующую строку запуска:

LANG=ru_RU.utf8 gramps &

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

четверг, 21 июля 2011 г.

Gnome 3 и режим спячки (hibernate)

В новом релизе Федоры 15 для оконного менеджера Gnome отсутствует по-умолчанию возможность вводить компьютер в режим спячки.
Можно выключить, можно засуспендить, а вот спячки - нет.
Решить это можно установкой расширения для оболочки Gnome 3:

yum install gnome-shell-extensions-alternative-status-menu