المطورون

إذا كنت مبرمجًا (أو ترغب في أن تصبح مبرمجًا)، وتهتم بتطوير ميزات جديدة، أو إصلاح الأخطاء، أو تحسين واجهة المستخدم لـ OpenShot، فإن الأقسام التالية ستشرح كيفية البدء والمشاركة!

الصورة الكبيرة

يتكون محرر الفيديو OpenShot من 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 لاستنساخ مستودعاتنا الثلاثة:

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، نحتاج إلى تثبيت بعض التبعيات على نظامك. أسهل طريقة لتحقيق ذلك هي باستخدام 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 في أوبونتو 24.04 لا تتضمن QtStateMachine. في هذا الإصدار، استخدم حزم PySide6 أعلاه أو قم بتثبيت حزمة PyQt6 الكاملة في بيئة افتراضية للبايثون:

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)"

في هذه المرحلة، يجب أن تكون قد استنسخت شفرة المصدر لجميع مكونات 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 .. على المجلد الأب. هذا يعثر على التبعيات وينشئ جميع ملفات Makefiles اللازمة لتجميع هذه المكتبة. ثم يستخدم make تلك الملفات لتجميع المكتبة، و``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 .. على المجلد الأب. هذا يعثر على التبعيات وينشئ جميع ملفات Makefiles اللازمة لتجميع هذه المكتبة. ثم يستخدم make تلك الملفات لتجميع المكتبة. وبما أننا قدمنا موقع تثبيت libopenshot-audio المجمعة، فسيتم استخدام هذا الإصدار من المكتبة بدلاً من إصدار النظام (إن وجد).

لا نقوم بتثبيت libopenshot بعد البناء، لأننا لا نحتاج إلى ذلك. لأغراض الاختبار، يمكننا إخبار OpenShot باستخدام libopenshot مباشرة من دليل build الخاص بنا.

ربط اللغات

واجهة برمجة التطبيقات 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 بايثون، ملفات *.ui PyQt UI، إلخ...). هذا يتطلب مكتبات libopenshot-audio و libopenshot، وإذا حدث خطأ في الخطوات أعلاه، فمن المحتمل ألا يتم تشغيل OpenShot.

إذا تم تشغيل OpenShot في هذه المرحلة، تهانينا! لديك الآن نسخة محلية عاملة من OpenShot تعمل من شفرة المصدر المحلية الخاصة بك. جرب إجراء بعض التغييرات على شفرة المصدر وأعد تشغيل OpenShot... يجب أن ترى تغييراتك الآن!

خيارات تشغيل سطر الأوامر

للتعديل، والتحريك، والتغييرات الدُفعية، والتصدير من خلال الطرفية أو السكريبت، راجع واجهة سطر الأوامر. ابدأ بـ openshot-qt --cli intro (أو python3 src/launch.py --cli intro من المصدر). ضع --cli أولاً، يليه أمر التعديل وخياراته.

خيارات التشغيل أدناه تعمل مع تطبيق OpenShot المثبت، بما في ذلك openshot-qt-cmd.exe على ويندوز لإظهار مخرجات الطرفية. لاستخدام CLI على ويندوز، اتبع إرشادات تنفيذ الكونسول في واجهة سطر الأوامر. عند التشغيل من المصدر، استخدم python3 src/launch.py بدلًا من اسم التطبيق. ضع الخيارات قبل أي مسارات ملفات تريد فتحها بواسطة OpenShot.

خيارات سطر أوامر OpenShot

الخيار

ما يفعله

--cli

ادخل إلى واجهة سطر الأوامر. استخدم --cli help لأوامر التعديل.

-h, --help

عرض خيارات تشغيل التطبيق والخروج. استخدم --cli 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 من شفرة المصدر، تأكد من مراجعة قائمة تقارير الأخطاء لدينا على GitHub: مشاكل OpenShot. كما يُشجعك على ملء نموذج المساهم السريع الخاص بنا contributor form وتعريف نفسك!

شارك تغييراتك

بمجرد إصلاح خطأ أو إضافة ميزة جديدة رائعة، تأكد من مشاركتها مع فريق OpenShot. من المثالي أن ندمج هذا في الفرع الرئيسي لشفرة المصدر. أسهل طريقة لمشاركة تغييراتك هي بإنشاء نسخة فرعية (fork) من مستودعنا، ودفع تغييراتك إلى GitHub، وإنشاء طلب سحب. يتيح طلب السحب لفريق OpenShot معرفة أن لديك تغييرات جاهزة للدمج. بعد ذلك يمكننا مراجعة الأمور، وتقديم الملاحظات، ونأمل دمج تغييراتك في الفرع الرئيسي.