دمج التسجيلات
اجمع عدة storyboards في فيديو واحد بملف sequence.json، وأدخل مقطع ميزة جديدة في منتصف عرض موجود دون إعادة تسجيله.
الملف sequence.json يجمع عدة storyboards، لكل منها تسجيله الخاص، في ملف MP4 واحد. يكتبه لك تطبيق الذكاء الاصطناعي، أو تكتبه بنفسك. أهم استخدام له هو إضافة ميزة جديدة إلى عرض صنعته من قبل: تسجّل الجزء الجديد فقط، ويبقى التسجيل القديم كما هو.
إدخال مقطع ميزة في عرض موجود#
افترض أن demo.json عرض جاهز، وأن الميزة التي تريد إظهارها مكانها بعد الثانية 42 من تسجيله. لا تعيد تسجيل العرض ولا تعدّل الـ storyboard الخاص به. تفعل ثلاثة أشياء.
- سجّل الميزة وحدها واكتب لها storyboard، ولنسمّه
feature/feature.json. ابدأه بالسطر"extends": "../demo.json"ليأخذ مظهر العرض: القالب والصوت وحجم الخرج والموسيقى. انظر مشاركة المظهر بـ extends. - اكتب
sequence.jsonبجانبdemo.json. اذكر العرض مرتين مقسومًا عند الثانية 42، وضع الميزة بين النصفين. - تحقّق ثم صيّر.
يكفي أن يحتوي storyboard الميزة على ما يختلف فقط:
{
"extends": "../demo.json",
"source": "rec.mp4",
"segments": [{ "in": 0, "out": 12 }],
"captions": [{ "at": 1, "text": "New: recurring invoices", "style": "title" }],
"narration": [{ "at": 1, "text": "Invoices can now repeat on a schedule." }]
}
وهذا هو الـ sequence:
{
"version": 1,
"parts": [
{ "storyboard": "demo.json", "to": 42 },
{ "storyboard": "feature/feature.json", "transition": { "type": "crossfade", "dur": 0.5 } },
{ "storyboard": "demo.json", "from": 42, "transition": { "type": "crossfade" } }
]
}
screenpilot sequence-validate sequence.json
screenpilot sequence sequence.json -q draft
screenpilot check sequence.mp4 --at 5,40,50
screenpilot sequence sequence.json -q delivery -o demo-with-feature.mp4
النتيجة تشغّل العرض حتى الثانية 42، ثم تنتقل بـ crossfade إلى مقطع الميزة، ثم تعود بـ crossfade وتكمل بقية العرض. تُعرض مقدمة العرض (intro) مرة واحدة في البداية، وخاتمته (outro) مرة واحدة في النهاية.
from وto هي ثواني المصدر الخاصة بذلك الـ storyboard، وهي نفسها التي تستخدمها في zooms وcaptions. اختر نقطة التقسيم من لقطة: screenpilot frames demo.mp4 --at 42 --grid.ملف الـ sequence#
المسارات في sequence.json نسبية إلى ملف الـ sequence. الأمر screenpilot sequence-schema (أو الأداة sequence_schema) يطبع JSON Schema المعتمد.
| الحقل | الافتراضي | المعنى |
|---|---|---|
version | 1 | إصدار الصيغة. دائمًا 1. |
parts | مطلوب | الـ storyboards بترتيب التشغيل. واحد على الأقل. يمكن أن يظهر الـ storyboard نفسه أكثر من مرة. |
output | خرج الجزء الأول | الحقول width وheight وfps للفيديو كله. ما تكتبه هنا يتغلب على output الخاص بالجزء الأول. |
حقول الجزء#
| الحقل | الافتراضي | المعنى |
|---|---|---|
storyboard | مطلوب | مسار storyboard نسبي إلى ملف الـ sequence. |
from | البداية | ثانية المصدر التي يبدأ منها هذا الجزء. |
to | النهاية | ثانية المصدر التي ينتهي عندها هذا الجزء. |
transition | cut | كيف يدخل هذا الجزء بعد الجزء السابق. انظر الانتقالات. يُتجاهل في الجزء الأول. |
ما تشترك فيه كل الأجزاء#
- حجم خرج واحد. تُصيَّر كل الأجزاء بالعرض والارتفاع ومعدل الإطارات نفسها، حتى لو اختلفت قيمها في الـ storyboards.
- intro واحدة وoutro واحدة. تُعرض
introفي الجزء الأول فقط، وoutroفي الجزء الأخير فقط. وتُترك بطاقات الأجزاء الأخرى. - ملفاتك لا تتغير. يكتب ScreenPilot storyboard مشتقًّا لكل جزء داخل مجلد البناء.
مدى المصدر: from وto#
الحقلان from وto يُبقيان المدى [from, to) فقط من زمن المصدر في الـ storyboard. المدى نصف مفتوح: ما يقع عند to تمامًا يتبع الجزء الذي يبدأ عنده. ولهذا فإن {"to": 42} يليه {"from": 42} يُبقيان كل عنصر في العرض مرة واحدة بالضبط.
| العنصر | ما يحدث عند الحدود |
|---|---|
| Segments | تُقصّ إلى المدى. إذا لم يبقَ شيء، يصبح الـ sequence غير صالح. |
| Narration | تبقى إذا بدأت داخل المدى. السطر الذي بدأ قبل from يُحذف، لأن السطر لا يستطيع أن يُستأنف من منتصف كلمة. |
| Zooms وcaptions وhighlights | تُقصّ إلى المدى. ما يتجاوز حدًّا يُقصَّر. وإذا بقي منه أقل من 0.5 ثانية يُحذف. |
| Holds وبطاقات الفصول | تبقى إذا وقع at داخل المدى. |
| Overlays | الـ overlay الذي له at يُقصّ إلى المدى مثل zoom. والذي بلا at (شعار للفيديو كله) يبقى في كل جزء. |
| زاوية الكاميرا | الـ view السارية عند from تنتقل إلى الجزء، فلا يبدأ النصف الثاني على نافذة أو شاشة خاطئة. |
يحذّر sequence-validate إذا كان to بعد نهاية المصدر.
الانتقالات#
الحقل transition في الجزء يحدد كيف يدخل بعد الجزء السابق. له type وdur اختياري.
| النوع | ما يراه المشاهد |
|---|---|
cut | قطع عادي. هو الافتراضي. |
crossfade | يتلاشى الجزء السابق داخل هذا الجزء. |
fade-black | يتلاشى الجزء السابق إلى الأسود، ثم يظهر هذا الجزء تدريجيًا. |
wipe-left, wipe-right | يظهر هذا الجزء بمسحة في ذلك الاتجاه. |
slide-left, slide-right | ينزلق هذا الجزء فوق السابق في ذلك الاتجاه. |
الحقل dur عدد الثواني التي يتداخل فيها الجزءان. افتراضيه 0.5، ويُقيَّد بنصف طول أي من الجزأين المجاورين، فلا يضيع مقطع قصير داخل انتقال طويل. والصوت يتلاشى مع الصورة.
تصيير الـ sequence#
| الأمر | وظيفته |
|---|---|
screenpilot sequence-validate <sequence> | يفحص الـ sequence وكل storyboard يستخدمه. إما يفشل ويعرض مشكلات الـ schema، وإما يطبع valid: true مع تحذيرات كل جزء. |
screenpilot sequence <sequence> | يصيّر كل جزء ثم يجمعها. الخيارات: -o, --output (الافتراضي <sequence>.mp4)، و-q, --quality (draft أو looks أو delivery)، و--png-frames، و--workers، و--build-dir. |
screenpilot sequence-schema | يطبع JSON Schema الخاص بـ sequence.json. |
الخطوات نفسها متاحة كأدوات: sequence_validate وsequence_render (المدخلات sequence وoutput وquality) وsequence_schema. انظر أدوات MCP.
- الأجزاء التي لم تتغير يُعاد استخدامها. يُصيَّر كل جزء مثل أي storyboard داخل
<sequence>.build/part-N/. في المرة التالية، لا يُعاد تصيير جزء لم يتغير storyboard الخاص به ولا تسجيله ولا events ولا موسيقاه ولا overlays ولا الجودة. تعديل مقطع الميزة لا يعيد تصيير العرض. - الدمج. إذا كان كل جزء متصلًا بما بعده بقطع عادي وكانت الأجزاء مرمّزة بالطريقة نفسها، تُدمج بنسخ المسار دون أي فقد في الجودة. وإذا وُجد انتقال، أو اختلف الترميز، يُعاد ترميز الفيديو. تخبرك النتيجة بما حدث في الحقل
join(copyأوencode). - النتيجة. يطبع الأمر مسار الملف والمدة وقيمة
joinوكل جزء مع مدته وهل أُعيد استخدامه وتحذيراته.
-q draft، ثم انظر إلى لقطات حول كل نقطة اتصال باستخدام screenpilot check. استخدم -q delivery للملف النهائي فقط.الحدود#
- الأمر
sequenceليس له--fromولا--toولا--formats. لمراجعة جزء واحد بسرعة، صيّر storyboard الخاص به بـscreenpilot render --from --to. ولتغيير الحجم اضبطoutputفي الـ sequence. - يحتفظ كل جزء بتسجيله وتعليقه الصوتي. ولا يُشترك بين الأجزاء إلا في حجم الخرج، وintro الجزء الأول وoutro الجزء الأخير.
- أي storyboard يفشل في التحقق يُفشل الـ sequence. ويذكر الخطأ الجزء، مثل
parts[1] (feature/feature.json).