واجهة سطر الأوامر

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

يعمل سطر الأوامر مع نفس المشاريع التي يستخدمها المحرر. يمكنك التحكم في محرر مفتوح ومراجعة التغييرات أثناء العمل، أو العمل في جلسة بدون واجهة دون فتح نافذة. تحافظ الجلسة على مشروعك مفتوحًا بين الأوامر، بما في ذلك التعديلات، وسجل التراجع، ووظائف التصدير. احفظه كمشروع .osp متى أردت الاستمرار في التحرير لاحقًا.

البدء

استخدم ملف OpenShot التنفيذي المثبت لديك متبوعًا بـ --cli. ابدأ بـ intro للحصول على دليل مختصر للجلسات، والتحرير، والتحريك، والحفظ، أو help لمراجعة الأوامر. هذه الأوامر لا تحتاج إلى جلسة نشطة. الأمثلة أدناه تتطلب نسخة OpenShot تدعم التحرير عبر سطر الأوامر.

لينكس AppImage

من الدليل الذي يحتوي على ملف AppImage الذي قمت بتحميله:

./OpenShot.AppImage --cli intro
./OpenShot.AppImage --cli help

استبدل OpenShot.AppImage باسم الملف الذي قمت بتحميله. إذا عرض AppImageLauncher نوافذ دمج سطح المكتب، قم بتعيين APPIMAGELAUNCHER_DISABLE=1 قبل تشغيل الأمر:

APPIMAGELAUNCHER_DISABLE=1 ./OpenShot.AppImage --cli intro

للسكريبتات أو الأوامر المتكررة، قم بتعيينها مرة واحدة في الصدفة الحالية:

export APPIMAGELAUNCHER_DISABLE=1
./OpenShot.AppImage --cli session start

يجب تعيين المتغير قبل تشغيل AppImage: يمكن لـ AppImageLauncher اعتراضه قبل أن يستلم OpenShot --cli. يتم حل مسارات الوسائط النسبية وملفات @batch.json من دليل العمل الخاص بك. احتفظ بملف AppImage متاحًا أثناء تشغيل جلساته أو عمليات التصدير.

لينكس Snap

لـ OpenShot Snap، استخدم:

snap run openshot-qt --cli intro
snap run openshot-qt --cli help
snap run openshot-qt --cli session start

تطبق أذونات الملفات في Snap على التحرير عبر سطر الأوامر أيضًا. احتفظ بالوسائط والمشاريع وعمليات التصدير في مواقع يمكن لـ Snap الوصول إليها، مثل مجلد المنزل الخاص بك. للسماح بالوصول إلى الأقراص الخارجية، قم بتوصيل إذن removable-media:

sudo snap connect openshot-qt:removable-media

ويندوز

مهم

استخدم openshot-qt-cmd.exe للتحرير عبر سطر الأوامر على ويندوز. يعرض هذا الملف التنفيذي في وحدة التحكم نتائج الأوامر، والمساعدة، والأخطاء في الطرفية الخاصة بك. الملف التنفيذي لسطح المكتب، openshot-qt.exe، لا يعرض المخرجات القياسية في طرفية تفاعلية، مما يترك الأوامر بدون ردود مرئية ويجعل واجهة سطر الأوامر صعبة الاستخدام.

في PowerShell، من دليل تثبيت OpenShot:

& .\openshot-qt-cmd.exe --cli intro
& .\openshot-qt-cmd.exe --cli help
& .\openshot-qt-cmd.exe --cli session start

إذا كنت في دليل مختلف، استخدم المسار الكامل إلى openshot-qt-cmd.exe. احتفظ بـ --cli بعد اسم الملف التنفيذي.

ماك أو إس

للتثبيت في Applications:

"/Applications/OpenShot Video Editor.app/Contents/MacOS/openshot-qt" --cli intro
"/Applications/OpenShot Video Editor.app/Contents/MacOS/openshot-qt" --cli help

البحث عن الأوامر

في هذا الدليل، openshot-cli هو اختصار لأمر التثبيت الخاص بك أعلاه، مثل snap run openshot-qt --cli أو ./OpenShot.AppImage --cli. بعض التثبيتات توفر أيضًا أمر openshot-cli مباشرة. عند التشغيل من المصدر، استخدم python3 src/launch.py --cli في بيئة Python الخاصة بـ OpenShot.

تُظهر الأوامر --cli فقط، و--cli help، و--cli --help نفس النظرة العامة. تصبح المساعدة أكثر تحديدًا أثناء تنقلك بين الأوامر:

openshot-cli clip help
openshot-cli clip keyframe help
openshot-cli clip keyframe set help
openshot-cli edit help
openshot-cli text help
openshot-cli effects list
openshot-cli effects audiovisualization help
openshot-cli effects audiovisualization help --property background

تشرح مساعدة المجموعة سير العمل مع أمثلة؛ تصف مساعدة العملية الوسائط والسلوك. --help تعادل الأمر help في النهاية. جميع أوامر المساعدة تعمل بدون جلسة تحرير.

يعرض effects list التأثيرات المتاحة مع أوصاف قصيرة. تشرح مساعدة التأثير خصائصها، والقيم الافتراضية، والخيارات، والنطاقات. يعرض effects instances التأثيرات المرتبطة بالفعل بالمقاطع، مع معرفات المقاطع الأصلية. تحدد أسماء الفئات، وأسماء العرض، والأسماء المستعارة بالشرطة السفلية نفس التأثير.

العمل مع السكريبتات ووكلاء الذكاء الاصطناعي

يمكن لوكلاء الترميز بالذكاء الاصطناعي مثل Codex و Claude Code استخدام واجهة سطر الأوامر لفحص وتحرير مشاريع OpenShot عبر أوامر الطرفية. أعطِ وكيلك مسار ملف OpenShot التنفيذي، والوسائط أو المشروع للعمل عليه، والنتيجة المطلوبة: المدة، الأبعاد، نمط التحريك، وموقع الإخراج. اطلب منه قراءة --cli intro قبل البدء. تعمل نفس الأوامر سواء كتبتها بنفسك أو شغلتها من سكريبت.

ابدأ بـ intro، ثم استخدم المساعدة الخاصة بالأمر حسب الحاجة. سير عمل مفيد هو اختيار جلسة، فحص المشروع، إجراء مجموعة صغيرة من التغييرات، مراجعة النتيجة، والحفظ. تعيد الأوامر بيانات JSON منظمة بحيث يمكن للسكريبتات والوكلاء استخدام معرفات الكائنات والنتائج مباشرة بدلاً من تفسير مخرجات الشاشة.

  • افحص قبل التحرير. استخدم المعرفات والمعلومات الخاصة بالخصائص المعادة بدلاً من التخمين بالأسماء، أرقام المسارات، أو التوقيت. اختر جلسة صراحةً عندما يكون أكثر من مشروع مفتوح.

  • جمّع التعديلات المتكررة. استخدم edit apply لتسلسل من التغييرات أو edit bulk لتطبيق قالب على المقاطع المحددة. تحقق باستخدام --dry-run قبل تطبيق دفعة.

  • تحقق من الحركة. اختر فضاء الإحداثيات، ابدأ ببضع إطارات رئيسية، واستخدم إعدادات التسهيل للحركة المألوفة. يقوم معاينة الإطار الرئيسي بأخذ عينات من المنحنى حتى تتمكن من اكتشاف التوقفات أو القفزات قبل التصدير. راجع الحركة المعروضة أيضًا؛ لا يمكن لورقة الاتصال وحدها أن تظهر كيف تبدو الحركة.

  • احفظ وتابع التصدير. احفظ المشروع صراحة وتحقق من حالة مهمة التصدير قبل اعتبار المخرجات مكتملة. إذا انتهى وقت الطلب، افحص حالته قبل تكرار التعديل.

تشرح الأقسام أدناه هذه سير العمل واتفاقيات التوقيت الخاصة بها.

الجلسات والمخرجات

بدء جلسة أو العثور عليها

ابدأ جلسة واحدة بدون واجهة (بدون نافذة محرر):

openshot-cli session start

لفتح مشروع موجود عند بدء التشغيل، أضف --project "/path/project.osp". يحتوي رد JSON الناجح على result.session_id. انسخ تلك القيمة. إذا كان OpenShot يعمل بالفعل، أو نسيت المعرف، ابحث عن الجلسات المتاحة باستخدام:

openshot-cli session list

اختر الجلسة للمشروع الذي تنوي تحريره. لا تحتاج إلى بدء جلسة جديدة لكل أمر.

اختيار جلسة

نصيحة

قم بتعيين OPENSHOT_SESSION مرة واحدة، ثم نفذ الأوامر بشكل طبيعي. يتذكر الطرف الخاص بك الجلسة المختارة، لذا لا تحتاج إلى تمرير --session مع كل أمر. استخدم مثال PowerShell أو Bash أدناه.

استبدل SESSION_ID أدناه بـ session_id الذي تم إرجاعه بواسطة session start أو session list.

Windows PowerShell:

$env:OPENSHOT_SESSION = "SESSION_ID"
& .\openshot-qt-cmd.exe --cli timeline view
& .\openshot-qt-cmd.exe --cli export start "C:\path\test.mp4" --wait

Linux Bash:

export OPENSHOT_SESSION="SESSION_ID"
./OpenShot.AppImage --cli timeline view
./OpenShot.AppImage --cli export start "/path/test.mp4" --wait

على macOS، استخدم نفس صيغة export. لأوامر macOS أو Snap، استبدل الملف التنفيذي الخاص بتثبيتك من قسم البدء. يستمر الاختيار لهذا الطرف والأوامر التي تُشغل منه. قم بتعيينه مرة أخرى في طرف جديد، أو حدّثه عند التبديل إلى جلسة مختلفة.

تفترض أمثلة التحرير والتصدير المتبقية تعيين OPENSHOT_SESSION. يوضح القسم الفرعي التالي كيفية التقاط المعرف تلقائيًا للبرمجيات النصية.

لاستهداف جلسة مختلفة لأمر واحد فقط، استخدم --session. يتجاوز OPENSHOT_SESSION دون تغيير اختيار الطرف الخاص بك:

openshot-cli --session OTHER_SESSION_ID project get

مع ملف تنفيذي معبأ، ضع هذا التجاوز بعد --cli وقبل مجموعة الأوامر: --cli --session OTHER_SESSION_ID project get.

يعمل الاختيار التلقائي فقط عندما توجد جلسة واحدة قابلة للوصول بالضبط. إذا رأيت session_required، نفذ session list واختر الجلسة المقصودة صراحة. إذا لم تعد مدرجة، أعد تشغيلها واستخدم المعرف الجديد. لا تتطلب المساعدة، intro، واكتشاف الجلسة جلسة مختارة.

التقاط معرف الجلسة تلقائيًا

يمكن للبرمجيات النصية قراءة result.session_id مباشرة من JSON الذي تم إرجاعه بواسطة session start وتعيين OPENSHOT_SESSION للأوامر التالية. لا حاجة لنسخ المعرف يدويًا أو قراءة ملف سجل. تحقق من نجاح بدء التشغيل قبل استخدام المعرف المُعاد.

Windows PowerShell (قم بتعيين مسار الملف التنفيذي لتثبيتك):

$openshot = "C:\Program Files\OpenShot Video Editor\openshot-qt-cmd.exe"
$reply = & $openshot --cli session start
if ($LASTEXITCODE -ne 0) { throw "OpenShot session startup failed" }
$session = $reply | ConvertFrom-Json
if (-not $session.ok -or -not $session.result.session_id) {
    throw "OpenShot did not return a session ID"
}
$env:OPENSHOT_SESSION = $session.result.session_id
& $openshot --cli timeline view

Linux Bash (يتطلب jq لقراءة JSON):

openshot="/full/path/to/OpenShot.AppImage"
export APPIMAGELAUNCHER_DISABLE=1
if reply=$("$openshot" --cli session start) &&
   session_id=$(printf '%s' "$reply" | jq -er 'select(.ok == true) | .result.session_id | strings | select(length > 0)'); then
    export OPENSHOT_SESSION="$session_id"
    "$openshot" --cli timeline view
else
    echo "OpenShot session startup failed" >&2
fi

تحدد متغير البيئة جلسة للأوامر التي تُشغل من هذا الطرف؛ لا يغير إعدادًا على مستوى النظام. بدء جلسة لا يعيّن المتغير تلقائيًا. بعد إيقاف الجلسة، امسح الاختيار باستخدام Remove-Item Env:OPENSHOT_SESSION في PowerShell أو unset OPENSHOT_SESSION في Bash.

عرض وإيقاف جلسة

لعرض الجلسة المختارة في المحرر:

openshot-cli session show

على سطح المكتب، يقوم session show بإنشاء المحرر في نفس العملية ويحافظ على المشروع الحي، المعرفات، التاريخ، مهام التصدير، والاتصال. ترفع المكالمات المتكررة النافذة الموجودة. يفتح session start --show النافذة فورًا. لا يمكن للجلسات التي بدأت بدون عرض، أو مع QT_QPA_PLATFORM=offscreen/minimal، عرض نافذة سطح المكتب لاحقًا. لتلك الجلسات، احفظ وافتح المشروع في جلسة سطح مكتب جديدة. بمجرد العرض، أغلق الجلسة من خلال نافذة المحرر.

تذهب الخيارات العامة (--session, --timeout) قبل الأمر. يبقى session serve في المقدمة للمشرفين؛ يرجع session start بعد تسجيل مضيف في الخلفية. يرفض session stop التغييرات غير المحفوظة والتصديرات النشطة. استخدم --discard فقط للتخلص عمدًا من التعديلات غير المحفوظة.

مخرجات الأمر

النتائج تكون بصيغة JSON على stdout، باستثناء عرض الجدول الزمني النصي الافتراضي. الأخطاء تكون بصيغة JSON على stderr مع حالة خروج 1؛ أخطاء محلل الوسائط تخرج 2. تعيد التعديلات ملخصات مضغوطة مع أمر inspect. يعيد get JSON للكائن الأصلي. تتضمن ردود المشروع مراجعة؛ ردود كتالوج التأثير لا تتطلب جلسة. سجلات الجلسات بدون واجهة تعيش بجانب سجلات التسجيل الخاصة بها. يتجاوز OPENSHOT_SESSION_DIR الدليل الافتراضي ~/.openshot_qt/sessions.

تقبل الجلسات الأوامر محليًا على جهاز الكمبيوتر الخاص بك. احتفظ بسجل الجلسات خاصًا، لأنه يحتوي على بيانات الاعتماد المستخدمة للوصول إلى جلسات التحرير الخاصة بك. تعمل عمليات التصدير من لقطة، بحيث يمكنك الاستمرار في التحرير أثناء تشغيل مهمة.

فتح وحفظ المشاريع

يخزن مشروع OpenShot (.osp) الجدول الزمني القابل للتحرير الخاص بك. التصدير ينشئ فيديو نهائيًا؛ حفظ المشروع يتيح لك العودة إلى المقاطع والتأثيرات والإطارات الرئيسية لاحقًا. احفظ مشروعك بشكل منفصل حتى عندما تقوم أيضًا بتصدير فيديو.

فتح مشروع

ابدأ جلسة مع مشروع موجود:

openshot-cli session start --project "/home/me/Videos/My Project.osp"

أضف --show لفتح نافذة المحرر الخاصة به أيضًا. لاستخدام محرر يعمل بالفعل، ابحث عنه باستخدام session list. عيّن OPENSHOT_SESSION إلى معرف الجلسة الذي تم إرجاعه، ثم افتح أو فحص مشروعًا:

openshot-cli project open "/home/me/Videos/My Project.osp"
openshot-cli project get

استبدل مسار المثال بمسارك الخاص، وضع علامات اقتباس حول المسارات التي تحتوي على فراغات. project open يستبدل المشروع الحالي للجلسة المحددة. يرفض تجاهل التعديلات غير المحفوظة إلا إذا أضفت --discard صراحةً؛ احفظ تلك التعديلات أولاً إذا أردت الاحتفاظ بها. الفتح عبر واجهة الأوامر لا يعرض نوافذ حوار تفاعلية للوسائط المفقودة، لذا احتفظ بوسائط المصدر الخاصة بالمشروع متاحة.

لمشروع جديد وفارغ، استخدم session start بدون --project، ثم استورد الوسائط وأضف المقاطع كما هو موضح تحت التحرير.

حفظ مشروع أو نسخة

احفظ إلى ملف جديد، أو أنشئ نسخة منفصلة قبل إجراء المزيد من التغييرات:

openshot-cli project save "/home/me/Videos/My Project v2.osp"

لتحديث ملف موجود، اسمح بالاستبدال صراحةً:

openshot-cli project save "/home/me/Videos/My Project v2.osp" --overwrite

قدم دائمًا مسار الوجهة. حفظ ملف .osp لا يجمع كل لقطات المصدر الخاصة بك في ذلك الملف؛ احتفظ بالوسائط المشار إليها متاحة عند نقل المشروع أو إعادة فتحه.

تصدير فيديو

أتمتة العرض والتصدير من السكريبتات أو وكلاء الذكاء الاصطناعي، باستخدام إعدادات المشروع أو اختيار ملف تعريف إخراج مختلف لكل تصدير. يمكن أن تعمل مهام التصدير في الخلفية أو تنتظر الانتهاء قبل متابعة السكريبت الخاص بك. لعرض ملف MP4 باستخدام دقة المشروع ومعدل الإطارات:

openshot-cli export start "/home/me/Videos/video.mp4" --wait

بشكل افتراضي، يستخدم OpenShot فيديو H.264 وصوت AAC. استبدل مسار المثال بمسارك، باستخدام مجلد موجود واسم ملف جديد. لا يتم أبدًا الكتابة فوق المخرجات الموجودة. التصدير لا يحفظ مشروع .osp القابل للتحرير؛ استخدم project save بشكل منفصل للحفاظ على عمل التحرير الخاص بك.

خيار --wait يبقي الأمر قيد التشغيل حتى يكتمل التصدير أو يبلغ عن فشل. راجع الفيديو النهائي قبل مشاركته.

التحقق من تقدم التصدير

اترك --wait لبدء التصدير في الخلفية. تتضمن الاستجابة معرف مهمة يمكنك استخدامه للتحقق من تقدمها:

openshot-cli export start "/home/me/Videos/video.mp4"
openshot-cli export status JOB_ID
openshot-cli export status JOB_ID --wait
openshot-cli export list

استبدل JOB_ID بالمعرف المُعاد. إذا انتهى وقت الانتظار، يستمر التصدير في العمل؛ تحقق من نفس المهمة بدلاً من بدء تصدير آخر. لإيقاف مهمة، استخدم export cancel JOB_ID. كل مهمة تلتقط الجدول الزمني عند البدء، لذا لا تغير التعديلات اللاحقة تصديرًا جاريًا.

الانتظار الافتراضي هو 600 ثانية؛ عدل هذا باستخدام --wait-timeout. هذا منفصل عن --timeout العام لكل طلب. إخفاقات التصدير، الإلغاء، وانتهاء مهلة الانتظار تنهي الأمر بحالة 1 وتتضمن تفاصيل المهمة.

التصدير باستخدام ملفات تعريف متعددة

صدّر نفس الجدول الزمني بدقات أو نسب أبعاد مختلفة عن طريق اختيار ملف تعريف تصدير لكل إخراج. ينطبق ملف تعريف التصدير فقط على تلك المهمة؛ ولا يغير ملف تعريف مشروع التحرير. يحدد الملف التعريفي الأبعاد، معدل الإطارات، ونسبة العرض إلى الارتفاع؛ يختار الإعداد المسبق للتصدير إعدادات الترميز مثل MP4/H.264.

ابحث عن الملفات التعريفية المتاحة وافحص إعداداتها:

openshot-cli profile list --search 720
openshot-cli profile list --search 1080
openshot-cli profile get builtin:01280x0720p0030_16-09

على سبيل المثال، صدّر نسخًا أفقية بدقة 720p و1080p، ثم نسخة مربعة بدقة 1080 في 1080. تستخدم هذه الملفات التعريفية جميعها 30 إطارًا في الثانية:

openshot-cli export start "/home/me/Videos/video-720p.mp4" --profile builtin:01280x0720p0030_16-09 --wait
openshot-cli export start "/home/me/Videos/video-1080p.mp4" --profile builtin:01920x1080p0030_16-09 --wait
openshot-cli export start "/home/me/Videos/video-square.mp4" --profile builtin:01080x1080p0030_01-01 --wait

استخدم اسم ملف إخراج مختلف لكل نسخة. احتفظ بالتعديلات دون تغيير بين المهام عندما تريد نسخًا متطابقة. تغيير نسبة العرض إلى الارتفاع يمكن أن يغير التأطير: راجع كل إخراج، خاصة العناوين والمواضيع المتحركة. لنسخة مربعة أو عمودية مركبة بشكل منفصل، احفظ نسخة من المشروع، غيّر ملف تعريف المشروع، واضبط المقاطع قبل التصدير. راجع الملفات التعريفية وإعدادات التصدير أدناه للملفات التعريفية المخصصة وخيارات الترميز.

تصدير دفعي لعدة مشاريع

أعد استخدام جلسة بدون واجهة لعرض عدة مشاريع محفوظة بالتتابع. افتح مشروعًا، صدره باستخدام --wait، ثم افتح المشروع التالي. تستخدم الأمثلة أدناه دقة ومعدل إطارات كل مشروع وتُنشئ ملفات MP4 بجانب ملفات .osp. أضف --profile PROFILE_ID لأمر التصدير لاستخدام ملف تعريف إخراج واحد لكل مشروع.

قم أولاً بتشغيل مثال معرف الجلسة التلقائي المطابق أعلاه بنجاح، في نفس الطرفية. يقوم بتعريف openshot ويختار الجلسة الجديدة. استبدل مسارات المشروع أدناه بمساراتك الخاصة. استخدم أسماء إخراج مميزة لا توجد بالفعل؛ تتحقق الأمثلة من جميع الوجهات قبل بدء الدُفعة.

Windows PowerShell:

$projects = @(
    "C:\VideoProjects\First.osp",
    "C:\VideoProjects\Second.osp"
)
foreach ($project in $projects) {
    if (-not (Test-Path -LiteralPath $project -PathType Leaf)) {
        throw "Project not found: $project"
    }
    $output = [System.IO.Path]::ChangeExtension($project, ".mp4")
    if (Test-Path -LiteralPath $output) { throw "Output already exists: $output" }
}
foreach ($project in $projects) {
    $output = [System.IO.Path]::ChangeExtension($project, ".mp4")
    & $openshot --cli project open $project
    if ($LASTEXITCODE -ne 0) { throw "Could not open: $project" }
    & $openshot --cli export start $output --wait --wait-timeout 86400
    if ($LASTEXITCODE -ne 0) { throw "Export needs attention: $output" }
}
& $openshot --cli session stop
if ($LASTEXITCODE -ne 0) { throw "Could not stop the session" }
Remove-Item Env:OPENSHOT_SESSION

لينكس باش (الأقواس تحافظ على معالجة الأخطاء محلية للدُفعة):

(
    set -e
    : "${OPENSHOT_SESSION:?Run the session startup example first}"
    projects=(
        "/home/me/VideoProjects/First.osp"
        "/home/me/VideoProjects/Second.osp"
    )
    for project in "${projects[@]}"; do
        test -f "$project" || { echo "Project not found: $project" >&2; exit 1; }
        output="${project%.osp}.mp4"
        test ! -e "$output" || { echo "Output already exists: $output" >&2; exit 1; }
    done
    for project in "${projects[@]}"; do
        "$openshot" --cli project open "$project"
        "$openshot" --cli export start "${project%.osp}.mp4" --wait --wait-timeout 86400
    done
    "$openshot" --cli session stop
) && unset OPENSHOT_SESSION

كلا الطريقتين توقفان الدُفعة عند فشل أمر وتترك الجلسة متاحة للفحص. حد الانتظار هنا هو 24 ساعة لكل تصدير. انتهاء مهلة الانتظار يترك العرض قيد التشغيل: استخدم export list و export status JOB_ID --wait قبل إعادة المحاولة. تبقى الفيديوهات المكتملة على القرص؛ قم بإزالة المشاريع المكتملة من الدُفعة قبل الاستئناف. بعد حل الفشل، أوقف الجلسة وامسح متغير البيئة الخاص بها عند الانتهاء.

اختيار الإعدادات المسبقة وإعدادات الترميز

اكتشف الإعدادات المسبقة للتصدير المثبتة والإعدادات المدعومة:

openshot-cli export preset list
openshot-cli export preset get builtin:format_mp4_x264
openshot-cli export capabilities
openshot-cli export start /tmp/reel.mp4 --preset builtin:format_mp4_x264 --quality med --wait

يقبل التصدير أيضًا --from-file FILE_ID مع خيار --create-custom. تُحل الإعدادات بهذا الترتيب: الإعدادات الافتراضية للمشروع، الإعداد المسبق، JSON المتقدم، علامات الملف الشخصي/الجودة/النطاق الصريحة. يكشف JSON المتقدم عن برامج ترميز الفيديو/الصوت ومعدل البت، تخطيط/معدل/قنوات الصوت، خيارات الترميز الأصلية، إعدادات جهاز العتاد، وعدد الخيوط.

على سبيل المثال، اختر خيار الترميز عبر JSON المتقدم:

openshot-cli export start /tmp/small.mp4 --profile builtin:00640x0360p0030_16-09 --json '{"video_options":{"preset":"fast"}}' --wait

التحقق من صحة إعدادات التصدير

تحقق من الإعدادات قبل بدء العرض:

openshot-cli export validate /tmp/reel.mp4 --preset builtin:format_mp4_x264

تقرير القدرات يعرض توفر برامج الترميز المجمعة، وليس توفر وحدة معالجة الرسومات الفعلية. التحقق يتجاوز ذلك: يفتح برامج الترميز (بما في ذلك برامج الترميز العتادية) والحاوية بالإعدادات الدقيقة، في عملية منفصلة، دون كتابة ملف. يفشل الجمع الذي لا يمكن للحاوية تحمله مع incompatible_export، شرح FFmpeg الخاص، والإعداد الذي يجب تغييره (details.cause.path):

openshot-cli export validate /tmp/song.mp3 --json '{"mode":"audio","format":"mp3","audio_codec":"aac"}'

يقوم عامل التصدير بنفس الفحص قبل العرض.

عرض نطاق إطارات

استخدم --start-frame و --end-frame لعرض جزء من الجدول الزمني. النطاقات شاملة وتبدأ من واحد عند معدل الإطارات في الثانية لملف التصدير. على سبيل المثال، اعرض أول 90 إطارًا بمعدل 30 إطارًا في الثانية (ثلاث ثوانٍ):

openshot-cli export start /tmp/excerpt.mp4 --profile builtin:01280x0720p0030_16-09 --start-frame 1 --end-frame 90 --wait

تصديرات الصوت فقط وتسلسلات الصور

اختر وضع الإخراج باستخدام JSON المتقدم:

openshot-cli export start /tmp/music.wav --json '{"mode":"audio","format":"wav","audio_codec":"pcm_s16le"}' --wait
openshot-cli export start /tmp/frames --json '{"mode":"image_sequence","format":"png"}' --end-frame 3 --wait

تتطلب تسلسلات الصور مجلد إخراج جديد. لا يتم أبدًا الكتابة فوق المخرجات الموجودة.

التحرير

إضافة المقاطع والمؤثرات

استخدم المعرفات التي تم إرجاعها بواسطة import/add/list، واكتشف أرقام الطبقات باستخدام project get:

openshot-cli file import /absolute/path/video.mp4
openshot-cli clip add FILE_ID --layer 2000000 --position 3 --start 10 --end 17 --volume 0
openshot-cli clip set CLIP_ID --json '{"volume":0.5}'
openshot-cli clip keyframe set CLIP_ID --property volume --frame 301 --value 0
openshot-cli clip keyframe set CLIP_ID --property volume --frame 331 --value 1
openshot-cli effects add CLIP_ID saturation
openshot-cli effects set EFFECT_ID --json '{"saturation":1.2}'
openshot-cli project save /absolute/path/edit.osp

اختر ملف تعريف المشروع مبكرًا عندما يكون ذلك ممكنًا؛ تدعم المشاريع المعبأة أيضًا تغييرات الملف الشخصي من خلال تحويل معدل الإطارات الحالي ونظام التراجع. --audio-only عند إنشاء المقطع يكتم الفيديو، بما في ذلك غلاف الألبوم المضمن في ملفات الموسيقى. لاستخدام ذلك المقطع في تصور الصوت بدلاً من ذلك، فعّل الفيديو والصوت الخاص به، واتبع مساعدة التأثير للطبقات الشفافة وتحديد مكان الطبقة.

فهم توقيت المقطع

تفترض الإطارات الرئيسية في المثال مشروعًا بمعدل 30 إطارًا في الثانية ومقطعًا مقصوصًا عند المصدر 10 ثوانٍ. الموضع بالثواني في الجدول الزمني؛ البداية/النهاية هي ثواني المصدر، مع استثناء النهاية. تبدأ الإطارات من 1. تستخدم إطارات صورة الملف المصغرة معدل إطارات المصدر. تستخدم إطارات الجدول الزمني معدل إطارات المشروع. تستخدم الإطارات الرئيسية للمقطع إحداثيات المصدر عند معدل إطارات المشروع، لذا فإن تقليم المقطع لا يحرك أول إطار رئيسي مرئي إلى الإطار 1.

تغيير الخصائص

يقوم set بدمج الخصائص العليا. يحول القيم العددية الخصائص ذات الإطارات الرئيسية إلى ثوابت. تستبدل المنحنى المتداخل المقدم ذلك المنحنى؛ استخدم keyframe set لتغيير نقطة واحدة فقط. تقبل وسائط JSON JSON مضمن، @file.json، أو - للإدخال القياسي. يتم التحقق من أسماء الخصائص، الأنواع، التعدادات، الإطارات الرئيسية، المراجع، والتوقيت قبل تحرير المشروع. تحدد الأخطاء الحقل، القيمة المتوقعة، القيمة المستلمة، وتصحيحًا حيثما أمكن. نطاقات منزلق واجهة المستخدم إرشادية حيث يدعم المحرك قيمًا تتجاوزها.

إضافة التلاشي

يقوم clip fade ID --in 0.5 --out 0.5 بحساب إحداثيات الإطارات الرئيسية لقص المصدر تلقائيًا. يستبدل منحنى الألفا؛ بدلاً من ذلك، ينشئ --property volume --value 0.25 تلاشيًا صوتيًا مع زيادة ذروة 0.25. يجب أن تتناسب المدد بين الإطار الأول والأخير المرئي؛ يصل التلاشي للخارج إلى الصفر في الإطار الأخير.

تقسيم المقاطع

يستخدم clip split ID --at 6.5 ثواني الجدول الزمني، ويلتقط أقرب إطار للمشروع، ويحتفظ بالنصفين. يحتفظ بمنحنيات إحداثيات المصدر ويكرر التأثيرات بمعرفات جديدة على النصف الأيمن، متبعًا سلوك التقطيع في المحرر. يحتفظ النصف الأيسر بمعرفه. يبلّغ الرد عن أوقات التقسيم المطلوبة/الفعلية وكلا الملخصين؛ يدعم نتيجة الدُفعة المسماة {"$ref":"cut.right.id"}. ترفض التقسيمات نقاط النهاية والمسارات المقفلة. يعيد التراجع المقطع الأصلي في معاملة واحدة.

الإعدادات المسبقة لقائمة المقطع

تستخدم إعدادات قائمة المقاطع في المحرر نفس الكود من سطر الأوامر. يسرد كل أمر إعداداته المسبقة في المساعدة الخاصة به، وكل منها يشكل خطوة تراجع واحدة:

openshot-cli clip motion CLIP_ID --preset slide-in-left
openshot-cli clip motion CLIP_ID --preset pulse --at 4.5
openshot-cli clip look CLIP_ID --effect ColorGrade --preset warm_up
openshot-cli clip look CLIP_ID --effect all --preset none
openshot-cli clip speed CLIP_ID --mode forward --factor 2
openshot-cli clip speed CLIP_ID --mode freeze --at 3 --duration 2
openshot-cli clip repeat CLIP_ID --passes 3 --pattern pingpong
openshot-cli clip waveform CLIP_ID

الإعدادات المسبقة للحركة تعتمد على التحويل الحالي للمقطع. تضيف إعدادات المظهر تأثيرًا واحدًا أو تستبدله، وnone تزيله. يعيد ضبط السرعة والتكرار توقيت كل إطار رئيسي ويغير طول المقطع؛ clip speed --mode reset يعيد السرعة إلى الوضع الطبيعي. الإجراءات الأخرى في القائمة هي تعديلات عادية: التدوير والتخطيط باستخدام clip set، والقص باستخدام effects add Crop. تعمل الأوامر أيضًا في edit apply و edit bulk.

إضافة وتنسيق النص

يقوم text add بإنشاء نص ووضعه كمقطع، باستخدام نفس النص الموجود في أداة النص في المحرر. الخيارات التي لا تحددها تستخدم النمط الافتراضي للمحرر:

openshot-cli text add --text "Opening Night" --layer 5000000 --position 2 --duration 4 \
    --place lower-third --font "Noto Sans" --size 72 --bold --color "#ffffff" \
    --background "#80000000" --background-padding 16 --background-corner 12
openshot-cli text get CLIP_ID
openshot-cli text set CLIP_ID --stroke black --stroke-width 3
openshot-cli text set CLIP_ID --text $'Two\nlines' --line-spacing 1.4
openshot-cli text fonts --search noto
openshot-cli text list --search opening

الكلمات، الخط، الحجم، المحاذاة، عرض الصندوق والألوان الافتراضية تنتمي إلى النص في ملفات المشروع وتُشارك بين كل مقطع يستخدمه، تمامًا كما في المحرر. يقوم text set على مقطع واحد بتغييرهم جميعًا ويسردهم في changed_clip_ids؛ الخيار --this-clip-only يمنح ذلك المقطع نسخة خاصة به أولاً. يقوم clip add FILE_ID بوضع مقطع آخر من نص من text list. الأحجام بوحدة البكسل حسب دقة المشروع، والألوان تكون بصيغة #RRGGBB, #AARRGGBB (مع ألفا)، اسم CSS، أو transparent. الخيار --place يضع الصندوق في المركز، أو على حافة أو زاوية، أو في الثلث السفلي. --line-spacing هو مضاعف للمسافة العادية بين الأسطر (1 هو الطبيعي)، و--background-corner يدور زوايا الخلفية والحدود بعدد البكسلات المحدد.

مقطع النص هو مقطع عادي. الموقع، المقياس، الدوران، الشفافية، التوقيت، التلاشي، الإعدادات المسبقة للحركة والتأثيرات كلها تستخدم أوامر clip العادية. حجم الخط، الحشو، عرض الصندوق، وتباعد الحروف والأسطر تحدد حجم صندوق النص، لذلك لا يمكن تحريكها بإطارات رئيسية؛ لتحريك حجم النص، قم بتحريك مقياس المقطع. يمكن لكل مقطع تحريك ألوان نصه الخاصة، والحدود وعرض الخطوط باستخدام نفس أوامر الإطارات الرئيسية لأي خاصية أخرى:

openshot-cli clip keyframe list CLIP_ID
openshot-cli clip keyframe set CLIP_ID --property text_color.alpha --space clip --unit seconds --at 0 --value 0
openshot-cli clip keyframe set CLIP_ID --property text_color.alpha --space clip --unit seconds --at 1 --value 255

الخصائص المتحركة هي text_color, text_background, text_stroke و text_border (ألوان، مع .red, .green, .blue و .alpha من 0 إلى 255)، بالإضافة إلى text_stroke_width, text_border_width و text_background_corner. تفوز حركة المقطع الخاصة على النمط المشترك، ويعرض text get قائمة الأنماط التي يحركها المقطع. يعيد text reset CLIP_ID المقطع إلى النمط الافتراضي، مثل النص → إعادة تعيين النمط؛ الخيار --keyframes-only يزيل فقط حركة المقطع الخاصة. لتنسيق عدة نصوص مرة واحدة، اخترها باستخدام {"text":true}:

openshot-cli edit bulk --select '{"text":true}' --json '[{"method":"text.set","params":{"font_family":"Noto Sans","stroke_width":2}}]'

تطبيق دفعة من التعديلات

يقبل الأمر edit apply --json @edits.json --expect-revision 12 حتى 256 أمر تعديل مرتب، باستخدام أسماء أوامر منقطة مثل clip.set و effects.add (يعمل أيضًا الإملاء القديم effect.add):

[
  {"method":"project.profile.set","params":{"id":"builtin:01280x0720p0024_16-09"}},
  {"method":"file.import","as":"media","params":{"path":"/tmp/video.mp4"}},
  {"method":"clip.add","as":"shot","params":{"file_id":{"$ref":"media.id"},"layer":1000000,"start":10,"end":15}},
  {"method":"clip.fade","params":{"id":{"$ref":"shot.id"},"fade_in":0.5,"fade_out":0.5}}
]

الخيار as يربط نتيجة لأوامر لاحقة في نفس الدفعة. يستبدل كائن {"$ref":"shot.id"} حقل تلك النتيجة. تحل المراجع الأسماء السابقة فقط؛ الأخطاء الإملائية، المراجع المستقبلية، والأسماء المكررة تفشل قبل التحديثات الحية. تتضمن الاستجابة نتائج مضغوطة مرتبة وخريطة refs للمعرفات الفعلية. تشكل كل التغييرات في دفعة ناجحة خطوة تراجع/إعادة واحدة. يدعم project.profile.set أيضًا الجداول الزمنية المعبأة. تبقى أوامر الفتح، الحفظ، التصدير، والفحص خارج دفعات التحرير. تعرض مساعدة كل أمر أسماء معلمات JSON الخاصة به، بما في ذلك إملاء الشرطة السفلية لأعلام الصدفة (على سبيل المثال، --fps-num تصبح fps_num).

التحقق من صحة الدفعات ومعالجة الأخطاء

تتم معاينة جميع الأوامر في دفعات التحرير على مشروع منفصل قبل أي تحديثات حية. الإدخال غير الصحيح يترك المشروع الحي والمراجعة دون تغيير. تشكل الدفعات الصالحة مجموعة تراجع واحدة. يمكن أن تنتج الأخطاء غير المتوقعة أثناء التشغيل تغييرات جزئية؛ تبلغ الأخطاء عن العمليات المكتملة. لا يعني انتهاء المهلة الإلغاء، لذا تحقق من الحالة قبل إعادة محاولة التعديلات.

تحرير الإطارات الرئيسية بدقة

تدعم clip و transition و effects أوامر keyframe list و set و remove و clear و transform و copy و paste. يمكن لمسارات الخصائص أن تتعامل مع منحنيات متداخلة، مثل color.red في تأثير Chroma Key. يحافظ تحرير منحنى متداخل على القنوات الشقيقة. شغّل keyframe list ID بدون خاصية لاكتشاف مسارات المنحنيات وعدد النقاط. تشمل الاكتشاف وقوائم النقاط سياق توقيت القص/الموضع؛ كما تعرض قوائم النقاط إحداثيات الإطار الأصلية. تكشف أوامر get و properties عن الكائن الأصلي الكامل وبيانات تعريف الخصائص. تحدد الأخطاء الحقول غير الصالحة، وتقترح أسماء خصائص قريبة، وتشرح تصحيحات الإحداثيات.

اختر الإحداثيات صراحة باستخدام --space native|clip|timeline و --unit frames|seconds. تستخدم جميع الإطارات معدل الإطارات في المشروع وتبدأ العد من 1؛ تبدأ الثواني من الصفر وتلتقط أقرب إطار. Native هي إحداثيات الإطار الرئيسي لمحرك التشغيل الحالي (بما في ذلك قص المصدر). تبدأ إحداثيات المقطع من نقطة بداية المقطع المرئي؛ تبدأ إحداثيات الجدول الزمني من زمن المشروع صفر. تستخدم التأثيرات المرفقة توقيت المقطع الأصل. تعالج هذه الإحداثيات وقت التحريك، وليس إطارات الوسائط المختارة بواسطة منحنى إعادة التوقيت.

لمقطع موضوع عند 5 ثوانٍ، مقصوص عند ثانيتين، في مشروع بمعدل 30 إطارًا في الثانية، إطار المقطع 1، إطار الجدول الزمني 151، والإطار الأصلي 61 تشير إلى نفس النقطة. يتم تثبيت الموضع والقص بشكل مستقل على شبكة إطارات المشروع. يمكن أن يتضمن سرد منحنى كامل نقاطًا مخفية ذات إحداثيات مقطع/جدول زمني غير موجبة. لا يزال الخيار القديم --frame يعني إطارًا أصليًا ولا يمكن دمجه مع --at.

أمثلة:

openshot-cli clip keyframe set CLIP --property location_x --space clip --unit seconds --at 0 --value -1
openshot-cli clip keyframe set CLIP --property location_x --space clip --unit seconds --at 1 --value 0 --interpolation bezier --handles '{"handle_left":{"X":0.2,"Y":0.9}}'
openshot-cli effects keyframe set EFFECT --property color.red --space clip --at 31 --value 200
openshot-cli clip keyframe list CLIP --property location_x --space clip --unit seconds
openshot-cli clip keyframe transform CLIP --property location_x --space clip --start 1 --end 31 --scale 2 --offset 15
openshot-cli clip keyframe copy TARGET --property location_x --source-id SOURCE --space clip --start 1 --end 31 --at 1 --mode merge
openshot-cli clip keyframe remove CLIP --property location_x --space clip --at 31
openshot-cli clip keyframe clear CLIP --property location_x --value 0

الاستيفاء، التسهيل، والمعاينة

يصف الاستيفاء الجزء إلى نقطة الوجهة. الخطّي يعطي معدلًا ثابتًا بين النقاط. الثابت يحتفظ بالقيمة السابقة حتى الوجهة، ثم يقفز. تتعامل منحنيات بيزيه الأصلية مع التسهيل عند كلا طرفي كل جزء. يمكن أن يؤدي إضافة نقطة وسطى إلى تباطؤ غير مقصود؛ لتحريك واحد ميسر، ابدأ بنقطتي نهاية. عادةً اترك المقابض كما هي واختر إعدادًا مسبقًا مسمى لنمط معين.

اكتشف نفس إعدادات التسهيل المسبقة المستخدمة في قوائم المحرر، بدون جلسة:

openshot-cli clip keyframe presets

طبق إعدادًا مسبقًا على الجزء الوارد بتعيين وجهته:

openshot-cli clip keyframe set CLIP --property scale_x --space clip --unit seconds --at 0 --value 1
openshot-cli clip keyframe set CLIP --property scale_x --space clip --unit seconds --at 4 --value 1.2 --easing ease-in-out

خيار التسهيل يعني بيزيه. يضبط مقبض الخروج للنقطة السابقة ومقبض الدخول للوجهة معًا، مع الحفاظ على المقابض والقيم الأخرى للنقاط. يجب أن توجد نقطة سابقة. لا تدمجه مع مقابض مخصصة أو استيفاء مختلف. تعمل الإعدادات المسبقة في دفعات وقوالب جماعية. الإعداد المسبق في واجهة المستخدم ease ("Ease (Default)") يختلف عن المقابض الأصلية المستخدمة في استيفاء بيزيه العادي. يمكن للإعدادات المسبقة الخلفية تجاوز قيم نقاط النهاية.

افحص الحركة قبل العرض النهائي، باستخدام مقيم المنحنى الأصلي:

openshot-cli clip keyframe preview CLIP --property scale_x --space clip --unit seconds --start 0 --end 4
openshot-cli clip keyframe preview CLIP --property scale_x --space clip --unit seconds --at 2

المعاينة للقراءة فقط وتعمل بنفس الطريقة للتأثيرات والانتقالات. تعيد القيم ومعدل الدخول/الخروج الموقع بوحدات الخاصية في الثانية، محسوبة من الإطارات المجاورة مباشرة. هذه فروق محدودة، وليست مشتقات تحليلية. عند الإطار الأصلي 1 يكون معدل الدخول صفراً. يمكن لمعدلات الإطارات المجاورة الفحص خارج النطاق المطلوب. المعدلات القريبة من الصفر حول نقطة داخلية تكشف توقفًا؛ المعدلات المختلفة تكشف تغيرًا في السرعة. الاستيفاء الثابت يكشف قفزة عند الوجهة.

بدون نطاق، تمتد المعاينة من أول نقطة إلى آخر نقطة في المنحنى. النطاقات شاملة، مع 17 عينة موزعة بالتساوي افتراضيًا (--count: 2–256). يتم تضمين الإطارات الرئيسية وجيرانها المباشرين داخل النطاق أيضًا، لذا فإن عدد العينات القليل لن يخفي توقف إطار رئيسي. الحد الأقصى هو 1024 عينة؛ الطلبات الأكبر تتطلب نطاقًا أضيق. --at يأخذ عينة من إطار واحد. تعرض المعاينة إحداثيات الفضاء المطلوب والإطارات الأصلية الفعلية؛ الثواني تثبت على إطارات المشروع كما هو الحال في التحرير.

للمقابض المخصصة المتقدمة، يتم تطبيع كل من X و Y إلى الجزء: X هو جزء من مدى إطاره؛ Y هو جزء من تغير قيمته. التحكم الأول يأتي من المقبض الأيمن للنقطة السابقة، والثاني من المقبض الأيسر للوجهة. الإعدادات الأصلية هي right=(0.5, 0)، left=(0.5, 1)، مع مماسات نهايات مسطحة. تغيير نوع المقبض فقط لا يعيد حساب مماس مستمر عبر النقاط المحيطة. يتم الحفاظ على المقابض الموجودة عند تحريك نقطة.

نطاقات الإطارات الرئيسية شاملة، على عكس نطاقات وقت اختيار المقطع. القائمة تصدر points التي تستخدم قيم co.X مساحة/وحدة الإحداثيات المطلوبة. مرر تلك المصفوفة إلى keyframe paste --json @points.json بنفس المساحة/الوحدة، مع اختيار --mode merge (استبدال الإطارات المطابقة، الاحتفاظ بالبقية) أو --mode replace (استبدال المنحنى بأكمله). يأخذ copy مصدرًا من نفس نوع الكائن، و--source-property اختياري، ويرتكز أول نقطة مصدر مختارة عند --at على الهدف. تبقى المنحنيات والكائنات المصدر الأخرى دون تغيير.

يطبق transform مقياس وقت إيجابي حول أول نقطة مختارة، أو --pivot، يتبعه --offset موقع بالإشارة في الوحدة المختارة. يتم رفض تثبيت الإطار الذي يخلق إحداثيات مكررة، بما في ذلك التصادمات مع نقاط خارج النطاق المختار. يجب أن تظل الإحداثيات الأصلية على الأقل 1. مقابض بيزيه الأصلية المطبوعة والاستيفاء تتحرك مع كل نقطة؛ المقابض ليست إحداثيات إطار مطلقة. يغير set --handles المقابض المزودة فقط. الاستيفاء ينتمي إلى نقطة الوجهة.

يحافظ clear على نقطة أساس ثابتة عند الإطار الأصلي 1: حدد --value أو خذ عينة من المنحنى الحالي باستخدام --at (الإطار الأصلي 1 افتراضيًا). إزالة النقطة الأخيرة تحافظ أيضًا على قاعدة ثابتة، لذا تظل إضافات الإطارات الرئيسية اللاحقة صالحة.

تحديد وتحرير العديد من المقاطع

استخدم edit apply --dry-run للتحقق من صحة دفعة دون تغيير المشروع. استخدم edit bulk لتكرار قالب أمر صغير لكل مقطع محدد، مع تجميع جميع التغييرات في خطوة تراجع واحدة.

عاين التحديد أولاً:

openshot-cli edit select --json '{"layer":1000000,"start":5,"end":20,"effect":"Saturation"}'

تدعم المحددات ids (مصفوفة معرفات المقاطع الفريدة)، layer، start/end (ثواني الجدول الزمني)، file_id، effect (اسم الصنف أو الاسم المستعار)، وtext (يختار true المقاطع النصية). يتم دمج الفلاتر باستخدام AND. تحدد نطاقات الوقت المقاطع التي تتداخل مع [start, end)؛ ولا تقص تلك المقاطع. يتم ترتيب النتائج حسب الموضع، الطبقة، ثم المعرف، وتشمل المعرفات، الملخصات، حالة القفل، والمراجعة الحالية. المعرفات غير المعروفة تعتبر أخطاء. يتم رفض المحدد الفارغ؛ استخدم {"all":true} صراحة لكل مقطع. التحديدات محدودة بـ 256 مقطع ولا يتم اقتطاعها بصمت.

على سبيل المثال، احفظ هذه المصفوفة كـ templates.json:

[
  {"method":"clip.adjust","params":{"values":{"position":{"add":2},"volume":{"multiply":0.5}}}},
  {"method":"effects.add","as":"look","params":{"type":"Saturation"}},
  {"method":"effects.keyframe.set","params":{"id":{"$ref":"look.id"},"property":"saturation","space":"clip","at":1,"value":0}},
  {"method":"effects.keyframe.set","params":{"id":{"$ref":"look.id"},"property":"saturation","space":"clip","at":31,"value":1.2}}
]

قم بالتحقق منها، ثم طبقها على المراجعة التي تم إرجاعها بواسطة التحديد:

openshot-cli edit bulk --select '{"ids":["CLIP_A","CLIP_B"]}' --json @templates.json --dry-run
openshot-cli edit bulk --select '{"ids":["CLIP_A","CLIP_B"]}' --json @templates.json --expect-revision 42

ترث أوامر المقاطع الموجودة id؛ يرث effects.add clip_id. احذف هذه المعلمات الهدفية في القوالب. يجب أن تشير تعديلات التأثير إلى نتيجة مسماة سابقة. الأسماء محلية لكل مقطع محدد، لذا look.id يشير إلى تأثير مختلف لكل مقطع. لتغيير مثيلات التأثير الموجودة بواسطة معرف صريح، استمر في استخدام edit apply. مجموعة المعرفات المحددة ثابتة قبل التوسيع؛ التغييرات في الموضع أو التأثيرات لا تغير الأهداف المتبقية.

يطبق clip set الخصائص المطلقة؛ يطبق clip adjust multiply ثم add على خاصية رقمية أو كل قيمة في منحنى، مع الحفاظ على توقيت النقطة، الاستيفاء، والمقابض الموحدة. يتحقق من صحة القيم الناتجة، بما في ذلك المواقع غير السالبة والحجم. تبقى الحقول الهيكلية محمية.

ترفض العمليات الجماعية التحديدات الفارغة، المسارات الهدف المقفلة، وأكثر من 256 أمرًا موسعًا. تمر كل عملية موسعة بفحص مسبق منفصل قبل أي تعديل مباشر. لا تحجز التجارب الجافة المعرفات المولدة. استخدم --expect-revision لرفض التحديدات القديمة. الدُفعات الناجحة تعتبر خطوة تراجع واحدة، بما في ذلك بعد الحفظ/إعادة الفتح. يتم تجميع تحديثات واجهة المستخدم. يمكن أن تترك أخطاء وقت التشغيل/المستمع غير المتوقعة معاملة جزئية؛ يبلغ الخطأ عن العمليات المكتملة ويعيد التراجع تلك المجموعة، كما هو الحال مع edit apply.

الملفات الشخصية

اكتشف الملفات الشخصية ووافق الفيديو المستورد دون تخمين المعرفات:

openshot-cli profile list --search 720
openshot-cli profile get builtin:01280x0720p0024_16-09
openshot-cli profile match --file FILE_ID
openshot-cli project profile get
openshot-cli project profile set --from-file FILE_ID
openshot-cli project profile set builtin:01280x0720p0024_16-09
openshot-cli project profile set --json '{"width":640,"height":352,"display_ratio":{"num":20,"den":11},"fps":{"num":24000,"den":1001}}'

تشمل إدخالات الكتالوج معرفات ثابتة، أوصاف، أبعاد، معدل إطارات نسبي، نسب العرض إلى الارتفاع، وإعدادات المسح. القائمة/البحث مقسم إلى صفحات. يعيد التوافق مع المصدر معرفات دقيقة وبدائل مرتبة مع اختلافات صريحة. يتطلب التعيين من ملف تطابقًا دقيقًا ما لم يتم تحديد --create-custom؛ لا يختار ملفًا شخصيًا قريبًا بصمت أبدًا. لا يمكن للصور الثابتة والمصادر الصوتية فقط تعريف ملف فيديو. يستخدم التوافق معدل الإطارات المصدر المعلن.

يتم تضمين الإعدادات المخصصة في المشروع المحفوظ، بما في ذلك المعدلات النسبية، لذا لا يتطلب إعادة الفتح تثبيت ملف ملف شخصي منفصل. تستخدم تغييرات ملف المشروع تحويل معدل الإطارات الموجود ومعاملة تراجع واحدة. يستعيد التراجع/الإعادة توقيت المقطع والإطارات الرئيسية، بما في ذلك المواقع الحساسة للتقريب. يمكن للتصدير اختيار ملف شخصي بشكل مستقل دون تغيير المشروع.

يتبع سجل التراجع المحفوظ تفضيل حد التاريخ للمحرر. الحد هو ميزانية إجراء مرنة: يتم الاحتفاظ بجميع السجلات التابعة للمعاملات المحتفظ بها، لذا لا يمكن للحفظ اقتطاع دفعة كبيرة إلى إجراء تراجع جزئي. الصفر يعطل السجل المحفوظ. لا يزال حد طلب الدُفعة المنفصلة المكونة من 256 أمرًا ساريًا.

فحص الوسائط والجداول الزمنية

افحص توقيت المقطع وتخطيط المسار كنص أو JSON، أو قم برسم الصور لمراجعة التكوين والإطار قبل التصدير.

ملخصات الجدول الزمني

استخدم عرض نصي لمحة سريعة، أو JSON منظم للبرامج النصية والوكلاء:

openshot-cli timeline view --start 5 --end 12
openshot-cli timeline view --start 5 --end 12 --format json
openshot-cli timeline overview --start 5 --end 12

يكون timeline view افتراضيًا نصًا مضغوطًا مع المسارات المستخدمة، معرفات الكائنات، فترات الجدول الزمني/المصدر، حالة التدفق، الكسب، والفجوات/التداخلات. استخدم --detail summary|clips|full لاختيار التفاصيل، --format json للسياق المنظم، و--start/--end، --layer، والتقسيم للتركيز على النتيجة.

يوفر timeline overview سياقًا منظمًا مضغوطًا بدون بايتات الصور: معرفات مرتبة، تسلسل لكل مسار، فترات الجدول الزمني/المصدر، نطاقات التشذيب المرئية، إحداثيات الإطار، حالة الصوت/الفيديو، التأثيرات، والفجوات أو التداخلات المجاورة. الفترات ونطاقات الإطارات تستثني النهاية؛ أرقام الإطارات تبدأ من واحد. تستخدم إطارات المصدر معدل الإطارات المصدر؛ تستخدم إحداثيات الجدول الزمني والإطارات الرئيسية معدل إطارات المشروع. استخدم --layer و--start/--end للتركيز، و--limit/--offset للتقسيم (الافتراضي 100، الحد الأقصى 500 عنصر). تحتفظ المقاطع المعاد تعيين وقتها صراحةً بتعيينات المصدر المستنتجة. استخدم المراجعة المعادة مع edit apply --expect-revision.

معاينات الإطارات وأوراق الاتصال

قم برسم إطار واحد باستخدام thumbnail أو عين نطاقًا باستخدام strip. استخدم file لفحص الوسائط المصدر وtimeline لفحص الفيديو المركب، بما في ذلك التأثيرات والمقاطع متعددة الطبقات:

openshot-cli file thumbnail FILE_ID --frame 301 --output /tmp/source.png
openshot-cli file strip FILE_ID --start 10 --end 20 --count 12 --output /tmp/source-strip.png
openshot-cli timeline thumbnail --frame 91 --output /tmp/timeline-frame.png
openshot-cli timeline strip --start 0 --end 20 --count 12 --output /tmp/timeline-strip.png

صور الإطارات افتراضيًا 320x180 بكسل؛ أوراق الاتصال افتراضيًا 160x90 لكل بلاطة، بالإضافة إلى تسميات رمز الوقت. استخدم --width و--height لاختيار بكسلات الإخراج. تتضمن الردود بيانات وصفية دقيقة للعينة/الإطار. تساعد أوراق الاتصال في مراجعة التكوين عبر تسلسل؛ استخدم معاينات الإطارات الرئيسية والفيديو المرسوم لتقييم الحركة بين تلك العينات.

صور الجدول الزمني

التقاط تخطيط المسارات في المحرر، بما في ذلك المسطرة، الصور المصغرة، التأثيرات، الانتقالات، والأشكال الموجية:

openshot-cli timeline view --start 0 --end 20 --pixels-per-second 80 --output /tmp/tracks.png

تحديد --output يختار تنسيق الصورة؛ كما يختار --format image ذلك صراحةً. الالتقاط لا يغير نافذة العرض أو المشروع في المحرر. تتضمن الردود معرفات المقاطع والتوقيت إلى جانب حدود البكسل.

العرض الافتراضي للصور 1280 بكسل، مع ضبط الارتفاع ليتناسب مع المسارات المستخدمة. استخدم --width، --height، أو --all-tracks لضبط التخطيط، و--track-size أو --track-label-width لضبط المسارات والتسميات. نطاق البداية/النهاية يحدد التكبير؛ بينما --pixels-per-second يستمد العرض من نطاق الوقت.

عرض الأشكال الموجية للصوت

اختر --mode waveforms لفحص مظاهر الصوت على الجدول الزمني:

openshot-cli timeline view --start 5 --end 12 --mode waveforms --output /tmp/waves.png

يستخدم --mode auto عرض الأشكال الموجية المخزنة مؤقتًا؛ بينما يعرض --mode thumbnails الصور المصغرة بدلاً من ذلك. تمثل الأشكال الموجية مستويات الذروة/متوسط الجذر التربيعي للمصدر مع تعديلات حجم المقطع والتوقيت، قبل تأثيرات الصوت أو المزج.

استخراج الأشكال الموجية غير المخزنة مؤقتًا يفك تشفير المصادر كاملة، محدود بـ 600 ثانية لكل مصدر و1200 ثانية مصدر لكل طلب. تضييق النطاق المرئي لا يقلل من عمل فك التشفير هذا. للمصادر الأطول، أنشئ الأشكال الموجية في المحرر أولاً أو استخدم وضع الصور المصغرة. يمكن للطلبات اللاحقة إعادة استخدام الأشكال الموجية المخزنة مؤقتًا.

إخراج الصورة والقيود

يجب أن تكون مسارات الصور ملفات PNG جديدة في مجلدات موجودة. الصور محدودة بـ 4096 بكسل لكل محور، و8,388,608 بكسل إجمالاً، و64 عينة من ورقة الاتصال. الطلبات التي تتجاوز هذه الحدود تفشل قبل العرض.

تُكتب الصور إلى ملفات؛ تتضمن ردود JSON مساراتها وأحجام image_bytes. ينتظر الفحص انتهاء الصورة، ويمكن للطلبات الكبيرة أن تشغل المحرر لفترة وجيزة.

معالجة انتهاء مهلة الأوامر

انتهاء مهلة الطلب لا يعني فشل التغيير. استخدم معرف العملية في الخطأ مع operation get ID قبل إعادة المحاولة. يكشف operation list عن التغييرات الأخيرة وحالاتها، مراجعاتها، ونتائجها. تحتفظ العمليات المكتملة بنتائجها إذا كانت صغيرة بما يكفي، بما في ذلك معرفات الكائنات المعادة. التخزين محدود بـ 100 عملية و4 ميجابايت، مع حذف محتويات النتائج الفردية فوق 256 كيلوبايت. تدوم هذه السجلات فقط لجلسة التشغيل الحالية. لا تستعيد المشاريع بعد تعطل أو تمنع تطبيق نفس التعديل مرة أخرى عند تكرار الأمر. لوظائف التصدير أوامر الحالة/القائمة الخاصة بها.