Реклама ⓘ
Главная » Компьютерная электроника
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Timelapse Machine

Хорошие идеи приходят неожиданно. Так вышло, что за последние пол года я имел дело с большим количеством миникомпьютеров, но применить их в реальное дело не доходили руки. До этого момента. Сейчас я расскажу вам, как собрать максимально бюджетную конструкцию для автоматической съемки таймлапс видео и загрузки его на youtube канал, при этом мы не будем программировать, а только напишем bash скрипт. Так же к статье будет прикреплено видео, в котором вы сможете посмотреть на примере как все ниже изложенное делается.

Начнем с железа

Я решил построить все на Orange Pi Zero. Воткнул в него карточку в 4 Гб и развернул образ Armbian'а. Самой съемкой будет заниматься usb вебкамера, которая имеет разрешение 640*480, что печально, но в любой момент можно изменить камеру без особых хлопот. Питаться все будет от 3 амперного блока питания от DVD плеера. Все было закреплено на кусок текстолита.

Теперь программная начинка, пойдем по порядку. Если вы используете wifi в качестве интернет соединения, то сначала подключитесь к вашей точке доступа с помощью утилиты nmtui. Далее обновляем компоненты системы командами:

sudo apt-get update

sudo apt-get upgrade

Теперь стоит сделать небольшое отступление. Orange Pi Zero довольно сильно греется, однако, с помощью понижения частоты-напряжения процессора можно понизить температуру. Для нашей задачи постоянный фоновый нагрев является проблемой. Постоянный нагрев может привести к "отвалу" чипа, а нам нужно надежное устройство. Порывшись на форумах можно найти разные варианты конфигурации, но многие сходятся на мнении устанавливать частоту в 1 ГГц и напряжение питания 1.1 В. Нам необходимо изменить файл script.bin. Для этого сначала надо преобразовать его в формат fex, командой:

sudo sunxi-fexc -I bin -O fex /boot/bin/orangepizero.bin /boot/bin/orangepizero.fex

Далее открываем этот файл

sudo nano /boot/bin/orangepizero.fex

Находим и изменяем строчки:

[dvfs_table]

pmuic_type = 1

pmu_gpio0 = port:PL06<1><1><2><1>

pmu_level0 = 11300

pmu_level1 = 1100

max_freq = 912000000

min_freq = 240000000

LV_count = 7

LV1_freq = 1200000000

LV1_volt = 1300

LV2_freq = 1008000000

LV2_volt = 1100

LV3_freq = 960000000

LV3_volt = 1100

LV4_freq = 912000000

LV4_volt = 1100

LV5_freq = 648000000

LV5_volt = 1040

LV6_freq = 480000000

LV6_volt = 1040

LV7_freq = 240000000

LV7_volt = 1040 ​

Я решил выставить частоту 912 МГц. И приклеил небольшой радиатор на процессор. Теперь нужно сохранить файл и конвертировать его обратно в bin файл.

sudo sunxi-fexc -I fex -O bin /boot/bin/orangepizero.fex /boot/bin/orangepizero.bin

Хотя я все равно поставил дополнительно кулер, просто потому что у блока питания есть 12 В выход, а в ящике лежал лишний неиспользуемый кулер. Далее нам потребуются несколько утилит для формирования видео, устанавливаем их командой

sudo apt-get install fswebcam libav-tools imagemagick v4l-utils

Для начала необходимо сделать снимок с web камеры. Для этого удобно использовать утилиту fswebcam. Это маленькая и удобная консольная утилита для захвата изображений с V4L / V4L2 (Video4Linux) камер (чтобы понять можно ли использовать вашу камеру надо посмотреть есть на коробке аббревиатура UVC или надпись free driver). У этой утилиты есть множество параметров, но в простейшем случае, чтобы получить снимок с камеры нужно выполнить в консоли:

fswebcam имя_фотографии.jpg

Понятное дело, что формат можно использовать любой из поддерживаемых утилитой, но с моим качеством камеры я буду использовать просто jpeg. Снимку будут укладываться по адресу /timelapse/foto. В итоге получаем следующую команду.

fswebcam -c /timelapse/timelapse.conf

В файле timelapse.conf хранятся все параметры для работы камеры. Я прикрепил получившийся файлы к статье.

Мы сделали кадр. Но я хочу добавить на снимок еще логотип и время. Для реализации всего этого воспользуемся утилитой imagemagick. Это очень мощное средство для работы с изображениями. На самом деле, добавить логотип и время можно и с помощью fswebcam, но мне показалось так правильней. Плюс ко всему я планирую добавить обработку изображений в будущем, а тут уже как раз пригодиться эта утилита. Допустим у меня есть квадратная картинка-логотип logo.png, которую я хочу добавить в левый нижний угол, а время и дату снимка в правый нижний угол. Для добавления надписи мне необходимо в консоли вызвать следующую команду

convert фотография.jpg -font DejaVu-Sans-Mono-Bold -pointsize 30 -fill white -stroke black -gravity southeast -annotate +4+0 "$(date + "%d %h %Y %R") IRKT" фотография_после_обработки.jpg

Описание формата date можно почитать по следующей ссылке: https://ru.wikipedia.org/wiki/Date

Однако, если в системе нет нужного вам шрифта, вы можете установить стандартный пакет windows шрифтов командой.

sudo apt-get install ttf-mscorefonts-installer

А следующей командой можно проверить список всех доступных шрифтов в системе

convert -list font

Теперь добавляем логотип внизу слева командой.

composite -gravity southwest logo.png  foto.jpg foto.jpg 

Эти команды необходимо выполнять с некоторой периодичностью, и за целый день наберется приличное количество картинок. Потом будем сшивать эти картинки в видео используя для этого avconv. Для этого надо выполнить команду в консоли

avconv -r 25 -i foto/%05d.jpg -vcodec libx264 -r 25 output.mp4

Теперь по адресу /timelapse лежит видео output.mp4. Это видео нам необходимо загрузить на подготовленный Youtube канал. Для этого удобно воспользоваться готовым скриптом на питоне, но необходимо получить JSON с данными для авторизации. По пунктам как его получить расписано в описании к скрипту, однако вы можете посмотреть как это делаю я в видео. Скачиваем с github архив и устанавливаем командами:

wget https://github.com/tokland/youtube-upload/archive/master.zip
unzip master.zip
cd youtube-upload-master
sudo python setup.py install

После этого вам потребуется установить менеджер пакетов pip командой.

sudo apt-get install python-pip

После чего обновить его командой.

pip install --upgrade pip

Далее устанавливаете setuptools

sudo pip install setuptools

И необходимые пакеты

sudo pip install --upgrade google-api-python-client progressbar2

После чего необходимо получить JSON файл для авторизации, в видео подробно показано как это сделать. И заменить в директории программы JSON файл на ваш. После чего можно загрузить видео на youtube.

youtube-upload -title="Test video" output.mp4

После выполнения команды в терминале появится ссылка для подтверждения. Копируете и переходите по ней, а появившийся код вводите в терминал. Система запомнит все и после будет работать автоматически. Все классно работает, теперь наша задача написать все эти команды один bash скрипт, который будет вводить их за нас, и после этого закинуть его в автозагрузку компьютера. Последним штрихом станет удаление файла видео и перезагрузка компьютера после завершения загрузки видео. Итоговый вариант скрипта я прикрепил к статье.

Я понимаю, что способов реализовать подобное множество, мне захотелось сделать все именно так и  проверить надежность системы. Сейчас на моем специальном канале видео ролики добавляются автоматически. Камера установлена в Тункинской долине и вся конструкция ждет апгрейда самой камеры на (хотя бы) HD качество, но это уже совсем другая история. 

Надеюсь вам было интересно, задавайте ваши вопросы в комментариях.

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (5) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Nem0 #
640х480 в 2017 году это даже не смешно, плакать хочется. Хороший таймлапс должен быть в хорошем разрешении и высоком качестве, автоматом и тем более без пост обработки его не сделаешь, посему бесполезное изобретение
Ответить
0

[Автор]
Kamikadza #
Просто втыкаете в USB более качественную камеру и все, ничего больше менять не придется.
Ответить
0
YM #
Не совсем понятно куда и как вставить файл timelapse.conf После ввода в терминале fswebcam -c /timelapse/timelapse.conf - ошибка
pip install --upgrade pip не выполняется команда и далее также, не удалось повторить проект, с этой фразы автора "В итоге получаем следующую команду. fswebcam -c /timelapse/timelapse.conf" --- не понятно
Ответить
0

[Автор]
Kamikadza #
я создал директорию /timelapse к которой у меня лежит файл timelapse.conf и bash скрипт вызывающий fswebcam. Главное чтобы файл конфигурации лежал в текущей директории при вызове fswebcam. Так же в папке timelapse была создана папка foto. в которую баш скрипт сохраняет фотографии. Но опять же это все настраивается "под себя", как вам удобно
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

МиниПК MK809V - 4 ядра, Android 4.4.2
МиниПК MK809V - 4 ядра, Android 4.4.2
Макетная плата для пайки (10 шт) Бокс для хранения компонентов
вверх