воскресенье, 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.




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