Главная » Компьютерная электроника
Призовой фонд
на сентябрь 2017 г.
1. 1000 руб
PCBWay
2. Осциллограф DSO138
Паяльник
3. Тестер компонентов MG328
Паяльник
4. 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
Мультиметр Mastech MS8239C Набор 4WD Kit Bluetooth
вверх