توسعه‌دهندگان

اگر برنامه‌نویس هستید (یا می‌خواهید برنامه‌نویس شوید) و علاقه‌مند به توسعه ویژگی‌های جدید، رفع اشکال یا بهبود رابط کاربری OpenShot هستید، بخش‌های زیر نحوه شروع و مشارکت را توضیح می‌دهند!

نمای کلی

OpenShot Video Editor دارای ۳ بخش اصلی است: یک رابط کاربری 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، باید برخی وابستگی‌ها را روی سیستم شما نصب کنیم. آسان‌ترین راه برای انجام این کار استفاده از Daily PPA ما است. PPA یک مخزن غیررسمی اوبونتو است که بسته‌های نرم‌افزاری ما را برای دانلود و نصب فراهم می‌کند.

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 در اوبونتو ۲۴.۰۴ شامل QtStateMachine نیست. در آن نسخه، از بسته‌های PySide6 بالا استفاده کنید یا چرخ کامل PyQt6 را در یک محیط مجازی پایتون نصب کنید:

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

قبل از اجرای OpenShot، بایندینگ Qt انتخاب‌شده و ماژول‌های مورد نیاز آن را بررسی کنید:

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 .. را روی پوشه والد اجرا می‌کنیم. این کار وابستگی‌ها را پیدا کرده و تمام 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 بگوییم که مستقیماً از پوشه build ما از libopenshot استفاده کند.

بایندینگ‌های زبان

رابط برنامه‌نویسی 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، فایل‌های رابط کاربری PyQt *.ui و غیره) داده‌اید، شامل خواهد شد. این نیازمند کتابخانه‌های libopenshot-audio و libopenshot است و اگر در مراحل بالا مشکلی پیش آمده باشد، احتمالاً OpenShot راه‌اندازی نخواهد شد.

اگر در این مرحله OpenShot راه‌اندازی شد، تبریک می‌گوییم! اکنون یک نسخه محلی و عملیاتی از OpenShot دارید که از کد منبع محلی شما اجرا می‌شود. سعی کنید تغییراتی در کد منبع ایجاد کرده و OpenShot را دوباره راه‌اندازی کنید... اکنون باید تغییرات خود را ببینید!

گزینه‌های خط فرمان

این گزینه‌ها با برنامه نصب‌شده OpenShot کار می‌کنند، از جمله openshot-qt.exe در ویندوز. هنگام اجرای برنامه از سورس، به جای نام برنامه از python3 src/launch.py استفاده کنید. گزینه‌ها را قبل از هر مسیر فایلی که می‌خواهید OpenShot باز کند قرار دهید.

گزینه‌های خط فرمان OpenShot

گزینه

عملکرد

-h, --help

گزینه‌های موجود را نمایش داده و خارج شوید.

-V, --version

نسخه OpenShot را چاپ کرده و خارج شوید.

-l CODE, --lang CODE

از زبان رابط انتخاب‌شده برای این اجرا استفاده کنید. کد باید یکی از کدهای نمایش داده شده توسط --list-languages باشد.

--list-languages

کدهای زبان‌های پشتیبانی‌شده را فهرست کرده و خارج شوید.

--path FOLDER

یک پوشه به مسیر جستجوی ماژول‌های پایتون اضافه کنید. می‌توانید این گزینه را برای افزودن بیش از یک پوشه تکرار کنید.

--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 اطلاع می‌دهد که تغییرات شما آماده ادغام هستند. سپس می‌توانیم آن‌ها را بررسی کنیم، بازخورد دهیم و امیدواریم تغییرات شما را در شاخه اصلی ادغام کنیم.