Entwickler

Wenn Sie Programmierer sind (oder Programmierer werden möchten) und daran interessiert sind, neue Funktionen zu entwickeln, Fehler zu beheben oder die Benutzeroberfläche von OpenShot zu verbessern, erklären die folgenden Abschnitte, wie Sie anfangen und sich beteiligen können!

Das große Ganze

OpenShot Video Editor besteht aus 3 Hauptkomponenten: einer Python- & PyQt-Benutzeroberfläche (openshot-qt), einer C++-Audiobibliothek (libopenshot-audio) und einer C++-Videobibliothek (libopenshot). Wenn Sie mit Python, PyQt oder C++ nicht vertraut sind, sind dies gute Themen, um sich jetzt damit zu beschäftigen und mehr zu lernen.

Viele Fehler können jedoch mit nur Python-Kenntnissen behoben und neue Funktionen hinzugefügt werden, da die C++-Komponenten überhaupt nicht in die Benutzeroberfläche eingebunden sind. Python ist eine großartige Sprache, macht viel Spaß zu lernen und ist die einzige Voraussetzung, um OpenShot-Entwickler zu werden!

Warnung

Die folgenden Anweisungen gelten für Ubuntu Linux, da dies die einfachste Umgebung für die OpenShot-Entwicklung ist. Wenn Sie ein anderes Betriebssystem verwenden, empfehle ich, vor dem Fortfahren eine virtuelle Maschine mit Ubuntu LTS zu verwenden.

Wenn Sie für die Entwicklung ein Windows- oder Mac-System verwenden müssen, beginnen Sie mit den Build-Anweisungen im libopenshot-Wiki. Das Erstellen der Bibliothek mit all ihren Abhängigkeiten ist der schwierigste Teil des Prozesses.

Den neuesten Quellcode erhalten

Bevor wir Fehler beheben oder Funktionen hinzufügen können, müssen wir den Quellcode auf Ihren Computer bekommen.

Verwenden Sie git, um unsere 3 Repositories zu klonen:

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

Konfiguration Ihrer Entwicklungsumgebung

Um OpenShot tatsächlich zu kompilieren oder auszuführen, müssen wir einige Abhängigkeiten auf Ihrem System installieren. Der einfachste Weg ist die Verwendung unseres Daily PPA. Ein PPA ist ein inoffizielles Ubuntu-Repository, das unsere Softwarepakete zum Herunterladen und Installieren bereitstellt.

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 unterstützt PyQt5, PyQt6 und PySide6. libopenshot muss gegen die korrekte Qt-Version für das von Ihnen verwendete Binding gebaut werden (Qt5: PyQt5, Qt6: PyQt6 oder PySide6).

Für PySide6 (Qt6) Bindings installieren Sie diese Pakete:

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

Für PyQt6 installieren Sie diese Pakete:

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

Die PyQt6-Laufzeit muss QtCore, QtGui, QtWidgets, QtSvg, QtStateMachine und uic bereitstellen. Einige Distributionen teilen diese Module in separate Pakete auf. Insbesondere enthält das python3-pyqt6-Paket von Ubuntu 24.04 nicht QtStateMachine. Verwenden Sie in dieser Version die oben genannten PySide6-Pakete oder installieren Sie das vollständige PyQt6-Wheel in einer Python-virtuellen Umgebung:

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

Überprüfen Sie das ausgewählte Qt-Binding und die erforderlichen Module, bevor Sie OpenShot starten:

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

An diesem Punkt sollten Sie den Quellcode aller 3 OpenShot-Komponenten in lokalen Ordnern geklont, das OpenShot Daily PPA installiert und alle erforderlichen Entwicklungs- und Laufzeitabhängigkeiten installiert haben. Das ist ein großartiger Start, und wir sind jetzt bereit, mit dem Kompilieren von Code zu beginnen!

libopenshot-audio (Build-Anleitung)

Diese Bibliothek wird für die Audiowiedergabe und Audioeffekte benötigt. Sie basiert auf dem JUCE-Audio-Framework. Hier sind die Befehle zum Erstellen:

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

Im Wesentlichen wechseln wir in den Ordner libopenshot-audio/build und führen dann cmake .. im übergeordneten Ordner aus. Dies findet Abhängigkeiten und erstellt alle benötigten Makefiles, die zum Kompilieren dieser Bibliothek verwendet werden. Dann verwendet make diese Makefiles, um die Bibliothek zu kompilieren, und make install installiert sie an dem von uns angegebenen Ort. Wenn CMAKE_INSTALL_PREFIX nicht gesetzt ist, werden die Dateien standardmäßig nach /usr/local/ installiert, und make install erfordert Administratorrechte.

libopenshot (Build-Anleitung)

Diese Bibliothek wird für Video-Dekodierung, Kodierung, Animation und so ziemlich alles andere benötigt. Sie übernimmt die gesamte schwere Arbeit beim Videoschnitt und der Videowiedergabe. Hier sind die Befehle zum Erstellen:

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

Im Wesentlichen wechseln wir in den Ordner libopenshot/build und führen dann cmake .. im übergeordneten Ordner aus. Dies findet Abhängigkeiten und erstellt alle benötigten Makefiles, die zum Kompilieren dieser Bibliothek verwendet werden. Dann verwendet make diese Makefiles, um die Bibliothek zu kompilieren. Da wir den Speicherort unserer kompilierten libopenshot-audio-Installation angegeben haben, wird diese Version der Bibliothek anstelle der Systemversion (falls vorhanden) verwendet.

Wir installieren unser libopenshot nach dem Kompilieren nicht, da dies nicht nötig ist. Für Testzwecke können wir OpenShot anweisen, libopenshot direkt aus unserem build-Verzeichnis zu verwenden.

Sprachbindungen

Die libopenshot-API ist über SWIG-Bindungen in mehreren Sprachen verfügbar. Python wird von der OpenShot-Benutzeroberfläche verwendet, und wir bieten auch Ruby- und Java-Bindungen an. Experimentelle Unterstützung für Godot 4.4 ist für Entwickler enthalten, die Videobearbeitungsfunktionen in die Godot-Spiel-Engine integrieren möchten. Alle diese Bindungen verweisen auf denselben C++-Code, sodass Sie Videos in der Umgebung bearbeiten können, die Sie bevorzugen.

openshot-qt (Startanleitung)

Dies ist unsere Haupt-PyQt-Python-Anwendung. Da sie in Python geschrieben ist, muss sie nicht kompiliert werden, um ausgeführt zu werden. Um OpenShot aus dem Quellcode mit unseren neu erstellten libopenshot-audio- und libopenshot-Bibliotheken zu starten, verwenden Sie die folgenden Befehle:

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

Dies sollte die OpenShot-Benutzeroberfläche starten. Alle Änderungen, die Sie an den Quellcodedateien (*.py Python-Dateien, *.ui PyQt UI-Dateien usw.) vorgenommen haben, werden einbezogen. Dies erfordert die Bibliotheken libopenshot-audio und libopenshot. Wenn bei den obigen Schritten etwas schiefgelaufen ist, wird OpenShot wahrscheinlich nicht starten.

Wenn OpenShot an dieser Stelle startet, Glückwunsch! Sie haben jetzt eine funktionierende lokale Version von OpenShot, die von Ihrem lokalen Quellcode ausgeführt wird. Versuchen Sie, einige Änderungen am Quellcode vorzunehmen und OpenShot neu zu starten… Sie sollten jetzt Ihre Änderungen sehen!

Kommandozeilenoptionen

Diese Optionen funktionieren mit der installierten OpenShot-Anwendung, einschließlich openshot-qt.exe unter Windows. Beim Ausführen aus dem Quellcode verwenden Sie python3 src/launch.py anstelle des Anwendungsnamens. Setzen Sie Optionen vor alle Dateipfade, die OpenShot öffnen soll.

OpenShot-Kommandozeilenoptionen

Option

Funktion

-h, --help

Zeigt die verfügbaren Optionen an und beendet das Programm.

-V, --version

Gibt die OpenShot-Version aus und beendet das Programm.

-l CODE, --lang CODE

Verwendet die gewählte Benutzersprache für diesen Start. Der Code muss einer der von --list-languages angezeigten sein.

--list-languages

Listet unterstützte Sprachcodes auf und beendet das Programm.

--path FOLDER

Fügt einen Ordner zum Suchpfad für Python-Module hinzu. Diese Option kann mehrfach verwendet werden, um mehrere Ordner hinzuzufügen.

--feedback-preview

Zeigt beim Start die Feedback-Benachrichtigung an, ohne die Einladung in den gespeicherten Einstellungen als angezeigt zu markieren.

--update-preview

Zeigt beim Start die Update-Benachrichtigung an. Beide Vorschauoptionen können zusammen verwendet werden.

--test-models

Aktiviert den Datenmodell-Tester von Qt für die Entwicklung (erfordert Qt 5.11 oder höher).

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

Fügt detaillierte Schnittstellenmeldungen zur Protokolldatei und zum Terminal hinzu.

--debug-engine

Fügt detaillierte Meldungen der Video- und Audio-Engine zur Protokolldatei und zum Terminal hinzu.

--log-level LEVEL

Legt das Protokollierungsniveau für beide Teile von OpenShot fest, in Dateien und im Terminal.

--log-file-level LEVEL

Legt das Protokollierungsniveau in beiden Protokolldateien fest.

--log-console-level LEVEL

Legt das Protokollierungsniveau im Terminal für beide Teile von OpenShot fest.

--debug-file

Fügt detaillierte Schnittstellenmeldungen nur zur Protokolldatei hinzu. Diese ältere Option wird akzeptiert, aber nicht von --help angezeigt.

--debug-console

Fügt detaillierte Schnittstellenmeldungen nur im Terminal hinzu. Diese ältere Option wird akzeptiert, aber nicht von --help angezeigt.

PROJECT.osp oder Medien-Dateipfade

Öffnet ein Projekt, wenn der erste Dateipfad auf .osp endet. Andernfalls wird ein neues Projekt gestartet und die angegebenen Mediendateien importiert.

Für LEVEL verwenden Sie debug, info, warning, error, critical oder off. Siehe Verwendung von Protokollen zur Fehlerbehebung für Speicherorte der Protokolldateien, Beispiele und weitere Informationen zur Auswahl von Protokollierungsoptionen.

GitHub-Probleme

Da Sie OpenShot Video Editor erfolgreich aus dem Quellcode kompiliert und gestartet haben, sollten Sie unbedingt unsere Liste der Fehlerberichte auf GitHub ansehen: OpenShot Issues. Außerdem werden Sie ermutigt, unser kurzes Contributor-Formular auszufüllen und sich vorzustellen!

Teilen Sie Ihre Änderungen

Sobald Sie einen Fehler behoben oder eine großartige neue Funktion hinzugefügt haben, sollten Sie diese unbedingt mit dem OpenShot-Team teilen. Idealerweise können wir dies in unseren Haupt-Quellcode-Branch zusammenführen. Der einfachste Weg, Ihre Änderungen zu teilen, besteht darin, einen Fork unseres Repositories zu erstellen, Ihre Änderungen zurück zu GitHub zu pushen und eine Pull Request zu erstellen. Eine Pull Request informiert das OpenShot-Team darüber, dass Sie Änderungen zur Zusammenführung bereit haben. Dann können wir die Änderungen überprüfen, Feedback geben und hoffentlich Ihre Änderungen in den Haupt-Branch zusammenführen.