ScreenPilot

دمج التسجيلات

اجمع عدة storyboards في فيديو واحد بملف sequence.json، وأدخل مقطع ميزة جديدة في منتصف عرض موجود دون إعادة تسجيله.

الملف sequence.json يجمع عدة storyboards، لكل منها تسجيله الخاص، في ملف MP4 واحد. يكتبه لك تطبيق الذكاء الاصطناعي، أو تكتبه بنفسك. أهم استخدام له هو إضافة ميزة جديدة إلى عرض صنعته من قبل: تسجّل الجزء الجديد فقط، ويبقى التسجيل القديم كما هو.

إدخال مقطع ميزة في عرض موجود#

افترض أن demo.json عرض جاهز، وأن الميزة التي تريد إظهارها مكانها بعد الثانية 42 من تسجيله. لا تعيد تسجيل العرض ولا تعدّل الـ storyboard الخاص به. تفعل ثلاثة أشياء.

  1. سجّل الميزة وحدها واكتب لها storyboard، ولنسمّه feature/feature.json. ابدأه بالسطر "extends": "../demo.json" ليأخذ مظهر العرض: القالب والصوت وحجم الخرج والموسيقى. انظر مشاركة المظهر بـ extends.
  2. اكتب sequence.json بجانب demo.json. اذكر العرض مرتين مقسومًا عند الثانية 42، وضع الميزة بين النصفين.
  3. تحقّق ثم صيّر.

يكفي أن يحتوي 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 المعتمد.

الحقلالافتراضيالمعنى
version1إصدار الصيغة. دائمًا 1.
partsمطلوبالـ storyboards بترتيب التشغيل. واحد على الأقل. يمكن أن يظهر الـ storyboard نفسه أكثر من مرة.
outputخرج الجزء الأولالحقول width وheight وfps للفيديو كله. ما تكتبه هنا يتغلب على output الخاص بالجزء الأول.

حقول الجزء#

الحقلالافتراضيالمعنى
storyboardمطلوبمسار storyboard نسبي إلى ملف الـ sequence.
fromالبدايةثانية المصدر التي يبدأ منها هذا الجزء.
toالنهايةثانية المصدر التي ينتهي عندها هذا الجزء.
transitioncutكيف يدخل هذا الجزء بعد الجزء السابق. انظر الانتقالات. يُتجاهل في الجزء الأول.

ما تشترك فيه كل الأجزاء#

  • حجم خرج واحد. تُصيَّر كل الأجزاء بالعرض والارتفاع ومعدل الإطارات نفسها، حتى لو اختلفت قيمها في الـ 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).