ডেভেলপাররা

আপনি যদি একজন প্রোগ্রামার হন (অথবা প্রোগ্রামার হতে চান), এবং OpenShot-এর জন্য নতুন ফিচার তৈরি, বাগ ঠিক করা, বা ইউজার ইন্টারফেস উন্নত করতে আগ্রহী হন, তাহলে নিম্নলিখিত অংশগুলো আপনাকে শুরু করতে এবং অংশগ্রহণ করতে সাহায্য করবে!

বড় চিত্র

OpenShot Video Editor-এর ৩টি প্রধান উপাদান রয়েছে: একটি Python ও PyQt ইউজার ইন্টারফেস (openshot-qt), একটি C++ অডিও লাইব্রেরি (libopenshot-audio) এবং একটি C++ ভিডিও লাইব্রেরি (libopenshot)। আপনি যদি Python, PyQt, বা C++ সম্পর্কে পরিচিত না হন, তাহলে এই মুহূর্তে এগুলো নিয়ে গবেষণা করে আরও শিখা ভালো হবে।

তবে, অনেক বাগ শুধরানো এবং নতুন ফিচার যোগ করা যায় শুধুমাত্র Python জ্ঞান দিয়ে, কারণ C++ উপাদানগুলো ইউজার ইন্টারফেসে সম্পৃক্ত নয়। Python একটি অসাধারণ ভাষা, শেখার জন্য খুব মজার, এবং OpenShot ডেভেলপার হতে একমাত্র প্রয়োজনীয় দক্ষতা!

সতর্কতা

নিম্নলিখিত নির্দেশনাগুলো Ubuntu Linux-এর জন্য, যা OpenShot ডেভেলপমেন্টের জন্য সবচেয়ে সহজ পরিবেশ। আপনি যদি অন্য কোনো OS ব্যবহার করেন, তাহলে আমি পরামর্শ দিবো 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 হলো একটি আনঅফিশিয়াল 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 অবশ্যই আপনি যে binding ব্যবহার করছেন তার জন্য সঠিক Qt সংস্করণের বিরুদ্ধে তৈরি হতে হবে (Qt5: PyQt5, Qt6: PyQt6 বা PySide6)।

PySide6 (Qt6) binding এর জন্য, এই প্যাকেজগুলি ইনস্টল করুন:

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 runtime অবশ্যই QtCore, QtGui, QtWidgets, QtSvg, QtStateMachine, এবং uic প্রদান করতে হবে। কিছু ডিস্ট্রিবিউশন এই মডিউলগুলো আলাদা প্যাকেজে ভাগ করে। বিশেষ করে, Ubuntu 24.04 এর python3-pyqt6 প্যাকেজে QtStateMachine অন্তর্ভুক্ত নেই। সেই রিলিজে, উপরের PySide6 প্যাকেজগুলি ব্যবহার করুন অথবা Python ভার্চুয়াল পরিবেশে সম্পূর্ণ PyQt6 হুইল ইনস্টল করুন:

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

OpenShot চালু করার আগে নির্বাচিত Qt binding এবং এর প্রয়োজনীয় মডিউলগুলি যাচাই করুন:

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

এই পর্যায়ে, আপনার কাছে OpenShot-এর ৩টি উপাদানের সোর্স কোড লোকাল ফোল্ডারে ক্লোন করা, OpenShot ডেইলি PPA ইনস্টল করা, এবং সব প্রয়োজনীয় ডেভেলপমেন্ট ও রানটাইম ডিপেন্ডেন্সি ইনস্টল করা থাকা উচিত। এটি একটি চমৎকার শুরু, এবং এখন আমরা কোড কম্পাইল করা শুরু করতে প্রস্তুত!

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 API SWIG বাইন্ডিংসের মাধ্যমে বিভিন্ন ভাষায় উপলব্ধ। OpenShot ইউজার ইন্টারফেসে Python ব্যবহৃত হয়, এবং আমরা 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 অ্যাপ্লিকেশনের সাথে কাজ করে, যার মধ্যে Windows-এ openshot-qt.exe অন্তর্ভুক্ত। সোর্স থেকে চালানোর সময়, অ্যাপ্লিকেশন নামের পরিবর্তে 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 ভিডিও এডিটর কম্পাইল এবং চালু করেছেন, GitHub-এ আমাদের বাগ রিপোর্টের তালিকা দেখুন: OpenShot Issues। এছাড়াও, আমাদের দ্রুত contributor form পূরণ করে নিজেকে পরিচয় করানোর জন্য উৎসাহিত করা হচ্ছে!

আপনার পরিবর্তনগুলি শেয়ার করুন

যখন আপনি একটি বাগ ঠিক করেছেন বা একটি চমৎকার নতুন ফিচার যোগ করেছেন, তখন অবশ্যই এটি OpenShot টিমের সাথে শেয়ার করুন। আদর্শভাবে, আমরা এটি আমাদের প্রধান সোর্স কোড শাখায় মার্জ করতে পারি। আপনার পরিবর্তনগুলি শেয়ার করার সবচেয়ে সহজ উপায় হল আমাদের রিপোর একটি ফর্ক তৈরি করা, আপনার পরিবর্তনগুলি GitHub-এ পুশ করা, এবং একটি Pull Request তৈরি করা। একটি Pull Request OpenShot টিমকে জানায় যে আপনার পরিবর্তনগুলি মার্জ করার জন্য প্রস্তুত। তারপর আমরা বিষয়গুলি পর্যালোচনা করতে পারি, প্রতিক্রিয়া দিতে পারি, এবং আশা করি আপনার পরিবর্তনগুলি প্রধান শাখায় মার্জ করতে পারব।