Розробники

Якщо ви програміст (або хочете ним стати) і зацікавлені у розробці нових функцій, виправленні помилок або покращенні інтерфейсу користувача OpenShot, наступні розділи пояснять, як почати та долучитися!

Загальна картина

OpenShot Video Editor має 3 основні компоненти: інтерфейс користувача на Python та PyQt (openshot-qt), аудіобібліотеку на C++ (libopenshot-audio) та відеобібліотеку на C++ (libopenshot). Якщо ви не знайомі з Python, PyQt або C++, зараз саме час вивчити ці теми.

Однак багато помилок можна виправити та додати нові функції, маючи лише знання Python, оскільки компоненти на C++ взагалі не залучені в інтерфейс користувача. Python — чудова мова, її дуже цікаво вивчати, і це єдина необхідна навичка для того, щоб стати розробником OpenShot!

Попередження

Інструкції, що наведені далі, призначені для Ubuntu Linux — найпростіше середовище для налаштування розробки OpenShot. Якщо ви використовуєте іншу ОС, рекомендую спочатку запустити віртуальну машину з Ubuntu LTS перед подальшими діями.

Якщо вам потрібно використовувати Windows або Mac для розробки, почніть із ознайомлення з інструкціями зі збірки у вікі libopenshot. Збірка бібліотеки з усіма залежностями — найскладніша частина процесу.

Отримання останнього вихідного коду

Перш ніж виправляти помилки або додавати функції, потрібно отримати вихідний код на ваш комп’ютер.

Використайте git для клонування наших 3 репозиторіїв:

git clone https://github.com/OpenShot/libopenshot-audio.git
git clone https://github.com/OpenShot/libopenshot.git
git clone https://github.com/OpenShot/openshot-qt.git

Налаштування вашого середовища розробки

Щоб скомпілювати або запустити OpenShot, потрібно встановити деякі залежності у вашій системі. Найпростіший спосіб — скористатися нашим Daily PPA. PPA — це неофіційний репозиторій Ubuntu, де доступні наші пакети для завантаження та встановлення.

sudo add-apt-repository ppa:openshot.developers/libopenshot-daily
sudo apt-get update
sudo apt-get install openshot-qt \
                     build-essential \
                     cmake \
                     catch2 \
                     libx11-dev \
                     libasound2-dev \
                     libavcodec-dev \
                     libavdevice-dev \
                     libavfilter-dev \
                     libavformat-dev \
                     libavresample-dev \
                     libavutil-dev \
                     libfdk-aac-dev \
                     libfreetype6-dev \
                     libjsoncpp-dev \
                     libmagick++-dev \
                     libopenshot-audio-dev \
                     libprotobuf-dev \
                     libqt5svg5-dev \
                     libswscale-dev \
                     libunittest++-dev \
                     libxcursor-dev \
                     libxinerama-dev \
                     libxrandr-dev \
                     pkg-config \
                     python3-dev \
                     protobuf-compiler \
                     qtbase5-dev \
                     libqt5svg5-dev \
                     libxcb-xfixes0-dev \
                     qtmultimedia5-dev \
                     swig

OpenShot підтримує PyQt5, PyQt6 та PySide6. libopenshot має бути зібраний для правильної версії Qt, що відповідає зв’язку, який ви використовуєте (Qt5: PyQt5, Qt6: PyQt6 або PySide6).

Для зв’язків PySide6 (Qt6) встановіть ці пакунки:

sudo apt-get install \
                     python3-pyside6.qtcore \
                     python3-pyside6.qtgui \
                     python3-pyside6.qtwidgets \
                     python3-pyside6.qtstatemachine \
                     python3-pyside6.qtsvg \
                     python3-pyside6.qtuitools \
                     shiboken6

Для PyQt6 встановіть ці пакунки:

sudo apt-get install \
                     qt6-base-dev \
                     qt6-base-dev-tools \
                     qt6-tools-dev \
                     qt6-svg-dev

Час виконання PyQt6 має надавати QtCore, QtGui, QtWidgets, QtSvg, QtStateMachine та uic. Деякі дистрибутиви розділяють ці модулі на окремі пакунки. Зокрема, пакунок python3-pyqt6 в Ubuntu 24.04 не включає QtStateMachine. У цій версії використовуйте вищезазначені пакунки PySide6 або встановіть повний PyQt6 wheel у віртуальному середовищі Python:

python3 -m venv .venv
.venv/bin/python -m pip install PyQt6

Перевірте вибраний Qt-зв’язок та його необхідні модулі перед запуском OpenShot:

PYTHONPATH=src OPENSHOT_QT_API=pyqt6 .venv/bin/python -c \
    "from qt_api import QT_API, QStateMachine; print(QT_API, QStateMachine)"

На цьому етапі ви повинні мати клоновані локальні папки з вихідним кодом усіх 3 компонентів OpenShot, встановлений щоденний PPA OpenShot та всі необхідні залежності для розробки та виконання. Це чудовий початок, і тепер ми готові почати компіляцію коду!

libopenshot-audio (Інструкції зі збірки)

Ця бібліотека потрібна для відтворення аудіо та аудіоефектів. Вона базується на аудіофреймворку JUCE. Ось команди для її збірки:

cd libopenshot-audio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=dist ..
make
make install

По суті, ми переходимо до папки libopenshot-audio/build, потім запускаємо cmake .. у батьківській папці. Це знаходить залежності та створює всі необхідні Makefile для компіляції бібліотеки. Потім make використовує ці Makefile для компіляції, а make install встановлює файли у вказане місце. Якщо CMAKE_INSTALL_PREFIX не встановлено, файли будуть встановлені за замовчуванням у /usr/local/, і для запуску make install потрібні права адміністратора.

libopenshot (Інструкції зі збірки)

Ця бібліотека потрібна для декодування, кодування відео, анімації та майже всього іншого. Вона виконує основну роботу з редагування та відтворення відео. Ось команди для її збірки:

cd libopenshot
mkdir build
cd build
cmake -DLIBOPENSHOT_AUDIO_DIR=../../libopenshot-audio/build/dist ..
make

По суті, ми переходимо до папки libopenshot/build, потім запускаємо cmake .. у батьківській папці. Це знаходить залежності та створює всі необхідні Makefile для компіляції бібліотеки. Потім make використовує ці Makefile для компіляції. Оскільки ми вказали розташування нашої зібраної бібліотеки libopenshot-audio, буде використана саме ця версія замість системної (якщо вона є).

Ми не встановлюємо libopenshot після збірки, оскільки це не потрібно. Для тестування можна вказати OpenShot використовувати libopenshot безпосередньо з нашої папки build.

Обгортки мов програмування

API libopenshot доступне кількома мовами через обгортки SWIG. Python використовується в інтерфейсі OpenShot, також ми надаємо обгортки для Ruby та Java. Експериментальна підтримка Godot 4.4 включена для розробників, які хочуть інтегрувати функції відеомонтажу в ігровий рушій Godot. Всі ці обгортки працюють з одним і тим самим кодом на C++, тож ви можете редагувати відео у зручному для вас середовищі.

openshot-qt (Інструкції запуску)

Це наша основна PyQt Python-застосунок. Оскільки він написаний на Python, його не потрібно компілювати для запуску. Щоб запустити OpenShot із вихідного коду з нашими новозібраними бібліотеками libopenshot-audio та libopenshot, використайте наступні команди:

cd openshot-qt
PYTHONPATH=../libopenshot/build/src/bindings/python
python3 src/launch.py

Це має запустити інтерфейс користувача OpenShot. Будь-які зміни, які ви внесли у файли вихідного коду (*.py файли Python, *.ui файли PyQt UI тощо), будуть включені. Для цього потрібні бібліотеки libopenshot-audio та libopenshot, і якщо щось пішло не так у попередніх кроках, OpenShot, ймовірно, не запуститься.

Якщо OpenShot запускається на цьому етапі, вітаємо! Тепер у вас є робоча локальна версія OpenShot, яка працює з вашого локального вихідного коду. Спробуйте внести деякі зміни у вихідний код і знову запустити OpenShot… тепер ви повинні побачити свої зміни!

Параметри командного рядка

Ці параметри працюють з встановленим додатком OpenShot, включно з openshot-qt.exe на Windows. При запуску з вихідного коду використовуйте python3 src/launch.py замість назви додатка. Розміщуйте параметри перед будь-якими шляхами до файлів, які ви хочете відкрити в OpenShot.

Параметри командного рядка OpenShot

Параметр

Що він робить

-h, --help

Показати доступні параметри та вийти.

-V, --version

Вивести версію OpenShot та вийти.

-l CODE, --lang CODE

Використовувати обрану мову інтерфейсу для цього запуску. Код має бути одним із тих, що показані за допомогою --list-languages.

--list-languages

Показати список підтримуваних кодів мов та вийти.

--path FOLDER

Додати папку до шляху пошуку модулів Python. Цю опцію можна повторювати для додавання кількох папок.

--feedback-preview

Показати повідомлення зворотного зв’язку при запуску без позначення запрошення як показаного у збережених налаштуваннях.

--update-preview

Показати повідомлення про оновлення при запуску. Обидві опції попереднього перегляду можна використовувати разом.

--test-models

Увімкнути тестер моделей даних Qt для розробки (потрібен Qt 5.11 або новіший).

-d, --debug, --debug-ui

Додати докладні повідомлення інтерфейсу до файлу журналу та терміналу.

--debug-engine

Додати докладні повідомлення відео- та аудіо-двигуна до файлу журналу та терміналу.

--log-level LEVEL

Встановити рівень журналювання для обох частин OpenShot, у файлах та терміналі.

--log-file-level LEVEL

Встановити рівень журналювання у обох файлах журналу.

--log-console-level LEVEL

Встановити рівень журналювання у терміналі для обох частин OpenShot.

--debug-file

Додати докладні повідомлення інтерфейсу лише до файлу журналу. Ця стара опція приймається, але не показується у --help.

--debug-console

Додати докладні повідомлення інтерфейсу лише до терміналу. Ця стара опція приймається, але не показується у --help.

PROJECT.osp або шляхи до медіафайлів

Відкрити проект, якщо перший шлях до файлу закінчується на .osp. Інакше створити новий проект і імпортувати надані медіафайли.

Для LEVEL використовуйте debug, info, warning, error, critical або off. Див. Використання журналів для усунення проблем для розташування файлів журналу, прикладів та додаткової інформації про вибір параметрів журналювання.

Проблеми на GitHub

Тепер, коли ви успішно скомпілювали та запустили OpenShot Video Editor з вихідного коду, обов’язково перегляньте наш список звітів про помилки на GitHub: OpenShot Issues. Також рекомендуємо заповнити нашу коротку форму для учасників та представитися!

Поділіться своїми змінами

Як тільки ви виправите помилку або додасте чудову нову функцію, обов’язково поділіться цим з командою OpenShot. Ідеально, якщо ми зможемо об’єднати це з нашою основною гілкою вихідного коду. Найпростіший спосіб поділитися своїми змінами — створити форк нашого репозиторію, надіслати свої зміни назад на GitHub і створити Pull Request. Pull Request повідомляє команді OpenShot, що у вас є зміни, готові до об’єднання. Потім ми можемо переглянути їх, надати відгук і, сподіваємося, об’єднати ваші зміни в основну гілку.