Перед началом работы с проектом необходимо установить среду Node.JS и менеджер пакетов npm
.
npm install
npm run serve
npm run build
npm run lint
Перед запуском приложения вы должны указать параметры в файлах
.env.development
и .env.production
.
VUE_APP_API_URL=https://studio.dev.selfio.me
VUE_APP_AUTH_URL=https://auth.dev.selfio.me
VUE_APP_BACKEND_CLIENT_ID=b8b3e2a7-52fc-4dcc-aa47-a9f92d989de4
VUE_APP_PP_PROTOCOL=ws
VUE_APP_OBS_PROTOCOL=ws
VUE_APP_OBS_DEFAULT_ADDRESS=localhost:4455
VUE_APP_OBS_DEFAULT_PASSWORD=password1111
VUE_APP_PP_DEFAULT_ADDRESS=localhost:9000
VUE_APP_PP_DEFAULT_PASSWORD=
VUE_APP_PROMPTER_URL=wss://studio.dev.selfio.me/wsapp
VUE_APP_API_URL=https://app.selfio.me
VUE_APP_AUTH_URL=https://auth.selfio.me
VUE_APP_BACKEND_CLIENT_ID=bda2bd56-4c54-4d0d-919a-af89fd9d2d85
VUE_APP_PP_PROTOCOL=ws
VUE_APP_OBS_PROTOCOL=ws
VUE_APP_OBS_DEFAULT_ADDRESS=localhost:4455
VUE_APP_OBS_DEFAULT_PASSWORD=password1111
VUE_APP_PP_DEFAULT_ADDRESS=localhost:9000
VUE_APP_PP_DEFAULT_PASSWORD=
VUE_APP_PROMPTER_URL=wss://app.selfio.me/dev/prompter
Веб-сервис написан на языке Javascript с использованием фреймворка VueJs
Основные библиотеки, использующиеся в приложении:
Для реализации websocket-клиента для управления OBS в веб-приложении используется плагин obs-websocket-js. Для использования данного websocket-клиента и реализации функций, необходимых для работы веб-сервиса студии самозаписи, был написан класс-обертка src/wrappers/obs_wrapper.js
, содержащий следующие методы взаимодействия с OBS:
● createConnection – метод для открытия подключения к websocket-серверу по ip-адресу и паролю, если он необходим
● startRecording – метод для старта записи видео
● stopRecording – метод для остановки записи видео
● pauseRecording – метод для приостановки записи видео
● resumeRecording – метод для возобновления записи видео
● getScenes – метод для получения сцен из OBS для последующей настройки сценария работы студии
● setCurrentScene – метод для смены текущей сцены в OBS для переключения компоновки во время записи видео
● getTransitions – метод для получения списка доступных анимаций перехода между сценами для последующей настройки сценария работы студии
● setTransitionForScene – метод для установки перехода для определенной сцены при настройке сценария работы студии
● getCurrentSceneScreenshot – метод для получения текущей картинки из OBS для отображения превью изображения в студии
● deleteConnection – метод для закрытия подключения к websocket-серверу
Websocket-клиент для управления презентацией реализован вручную силами языка Javascript, без использования плагинов. Для этого был написан класс PPClient, содержащий следующие методы для обмена сообщениями с websocket-сервером:
● connect – для подключения к websocket-серверу по ip-адресу
● startSlideshow – для запуска слайд-шоу презентации
● stopSlideshow – для остановки слайд-шоу презентации
● goToSlide – для переключения слайда презентации по номеру
● close – для закрытия подключения к websocket-серверу.
Перед началом работы с проектом, необходимо установить среду Node.JS и менеджер пакетов npm
.
npm install
npm run serve
npm run build
npm run lint
А также необходимо указать параметры в файле .env
.
VUE_APP_PROMPTER_URL=wss://app.selfio.me/wsapp
VUE_APP_MULTIPROMPTER_BROKER_HOST=rabbitmq.selfio.me
VUE_APP_MULTIPROMPTER_BROKER_PORT=15675
VUE_APP_MULTIPROMPTER_BROKER_PATH='/ws'
Веб-сервис написан на языке Javascript с использованием фреймворка VueJs
Основной список зависимостей для библиотек, использующиеся в приложении:
Модуль для вставки в Vue проекты Selfio требует, чтобы проект уже использовал:
Для использования добавить этот репозиторий как сабмодуль в директорию src/modules
git submodule add https://git.miem.hse.ru/19107/web_modules/vue-prompter.git src/modules/prompter
Установить с помощью npm:
npm i --save ./src/modules/prompter
<!-- YourComponent.vue -->
<template>
<prompter-widget />
</template>
<script>
import PrompterWidget from '@/modules/prompter/components/PrompterWidget/index.vue'
export default {
components: { PrompterWidget }
}
</script>
// store/index.js
import prompter from '@/modules/prompter/store/prompter'
export default Vuex.createStore({
state: {
},
getters: {
},
mutations: {
},
actions: {
init ({ dispatch }) {
dispatch('prompter/init')
}
},
modules: {
prompter
}
Проект написан на языке Kotlin с использованием библиотек, которые представлены далее.
Модуль, позволяющий интерфейсу телесуфлера использовать технологию распознавания речи для прокрутки пользовательского текста по мере его чтения.
Код модуля находится здесь
Пошаговая инструкция по сборке проекта находится в README
Для удобства, на GitHub-е настроены action-s, собирающие докер-контейнер. Таким образом, сервер можно поднять в одну команду:
docker run -d --restart always -p 0.0.0.0:8888:8080 --name prompter --pull always ghcr.io/ayles/trueprompter:master
Чтобы запустить конкретную версию, вместо master
указывается нужный тег. Также доступна новая версия в ветке test_onnx_inference
, которую также является валидной меткой для пулла контейнера.
В репозитории есть таргет trueprompter_client
, который является простым cli-клиентом к данному серверу и пригоден для простого тестирования нового функционала.
Протокол запроса и ответа описан здесь и хорошо документирован.
ПО, предназначенное для наведения onvif-камеры на человека
git clone git.miem.hse.ru/592/ptz-tracker.git
cd ptz-tracker
cd setup_files
CPU:
. ./setup.sh
Jetson:
. ./setup.sh {JetPack version}
Control Server:
. ./venv/bin/activate
python3 control_server.py
Tracker Server:
. ./venv/bin/activate
python3 flask_server.py
Для работы сервера трекера в фоновом режиме необходимо установить сервис трекера, предварительно изменив поля WorkingDirectory, ExecStart с правильными путями в файле tracker.service
sudo mv tracker.service /etc/systemd/system/tracker.service
sudo systemctl enable tracker
sudo systemctl restart tracker
Программа для обрезания изображение с веб-камеры таким образом, чтобы человек всегда был в кадре. Обрезка должна происходить под заданное соотношение сторон.
Условия работы программы:
Требуется модуль obs_module.py, а также cropper. py, которым он пользуется. Для детекции необходим .yml.
Для работы необходимо:
Tally система для ASB под управлением Raspberry Pi 4
Установить jdk
sudo apt-get install openjdk-11-jdk
Установить WiringPi Native Library для Pi4j
sudo apt-get remove wiringpi -y
sudo apt-get --yes install git-core gcc make
cd ~
git clone https://github.com/WiringPi/WiringPi --branch master --single-branch wiringpi
cd ~/wiringpi
sudo ./build
Или, если Pi4j уже установлен:
sudo pi4j --wiringpi
Установить Pi4j
curl -sSL https://pi4j.com/install | sudo bash
Подробнее можно посмотреть на странице Pi4j
Запустить скрипт build
Документация серверного приложения находится тут