Skip to content

تعليق الفيديو

علّق الفيديو في Potato — صنّف المقاطع الزمنية، وحدّد الإطارات المفتاحية، وتتبّع الأجسام مع التنقل إطارًا بإطار وتصنيف الأحداث على امتداد الخط الزمني.

يدعم Potato تعليق الفيديو عبر التقسيم الزمني، وتصنيف الإطارات، وتحديد الإطارات المفتاحية، وتتبّع الأجسام.

أوضاع التعليق

الوضعالوصفحالة الاستخدام
segmentتحديد نطاقات زمنيةكشف المشاهد، أدوار المتحدثين
frameتصنيف الإطارات المفردةالتصنيف على مستوى الإطار
keyframeتحديد اللحظات المهمةكشف اللقطات البارزة
trackingتتبّع الأجسام عبر الإطاراتتتبّع الأجسام
combinedكل الأوضاع في واجهة واحدةمهام التعليق المركّبة

الإعداد الأساسي

yaml
annotation_schemes:
  - name: "video_segments"

خيارات الإعداد

الحقلالنوعالافتراضيالوصف
namestringمطلوبمعرّف فريد للتعليق
descriptionstringمطلوبالتعليمات المعروضة للمُعلّقين
annotation_typestringمطلوبيجب أن يكون "video_annotation"
labelslistمطلوبالتصنيفات المتاحة للتعليق
modestring"segment"وضع التعليق
min_segmentsinteger0الحد الأدنى للتعليقات المطلوبة
max_segmentsintegernullالحد الأقصى للتعليقات المسموح بها
timeline_heightinteger70ارتفاع الخط الزمني بالبكسل
overview_heightinteger40ارتفاع شريط النظرة العامة بالبكسل
zoom_enabledbooleantrueتفعيل تكبير الخط الزمني
playback_rate_controlbooleantrueعرض محدد سرعة التشغيل
frame_steppingbooleantrueتفعيل التنقل إطارًا بإطار
show_timecodebooleantrueعرض رقم الإطار والوقت
video_fpsinteger30معدل إطارات الفيديو المستخدَم في الحسابات

إعداد التصنيفات

يمكن أن تكون التصنيفات سلاسل نصية بسيطة أو كائنات مفصّلة تحمل ألوانًا واختصارات لوحة مفاتيح:

yaml
labels:
  - name: "intro"
    color: "#4ECDC4"
    key_value: "1"
  - name: "content"
    color: "#3B82F6"
    key_value: "2"
  - name: "outro"
    color: "#8B5CF6"
    key_value: "3"

أمثلة حسب الوضع

وضع المقاطع (الافتراضي)

حدّد نطاقات زمنية بوقت بداية ونهاية:

yaml
annotation_schemes:
  - name: "scene_detection"

وضع الإطارات

صنّف الإطارات المفردة:

yaml
annotation_schemes:
  - name: "frame_quality"

وضع الإطارات المفتاحية

حدّد اللحظات المهمة:

yaml
annotation_schemes:
  - name: "highlights"

وضع التتبّع

تتبّع الأجسام عبر الإطارات بمربعات إحاطة:

yaml
annotation_schemes:
  - name: "object_tracking"

الوضع المدمج

استخدم عدة أنواع تعليق في واجهة واحدة:

yaml
annotation_schemes:
  - name: "comprehensive"

عرض الفيديو

لتشغيل فيديو بسيط دون تعليق (مثلًا لمرافقة أنواع تعليق أخرى)، استخدم النوع video:

yaml
annotation_schemes:
  - name: "video_player"

الترجمات والتسميات التوضيحية

إذا كان للفيديو تسميات توضيحية، فيمكنك تعليقها بدلًا من الخط الزمني للفيديو أو إلى جانبه. يقرأ Potato صيغ WebVTT وSubRip وTTML/DFXP وSubStation Alpha، وصيغ YouTube json3 وsrv1/srv2/srv3، ويتعرّف على كل منها من محتوى الملف لا من امتداده.

bash
yt-dlp --write-auto-subs --sub-langs en --sub-format vtt --skip-download <URL>
json
{"id": "talk_01", "conversation": {"audio": "media/talk_01.mp3",
                                   "transcript": "captions/talk_01.vtt"}}

ملاحظة: التسميات التوضيحية المولّدة آليًّا بلا علامات ترقيم ولا تسميات متحدثين، وحدود مقاطعها تقع حيث امتلأت نافذة التسمية لا حيث انتهت الجملة. لا تبنِ عليها مخططًا على مستوى الجملة. انظر تعليق ترجمات YouTube لمعرفة البديل.

قائمة الصيغ الكاملة موجودة في صيغ النصوص التفريغية.

اختصارات لوحة المفاتيح

المفتاحالإجراء
Spaceتشغيل/إيقاف مؤقت
, / .الإطار السابق/التالي
[تحديد بداية المقطع
]تحديد نهاية المقطع
Enterإنشاء مقطع
Kتحديد إطار مفتاحي
Cتصنيف الإطار الحالي
Deleteإزالة التعليق المحدد
1-9اختيار التصنيف
+ / -تكبير/تصغير

صيغة البيانات

بيانات الإدخال

يجب أن يتضمن ملف بياناتك مسارات الفيديو أو عناوين URL:

json
[
  {
    "id": "video_1",
    "video_url": "https://example.com/videos/sample1.mp4",
    "description": "Meeting recording - identify speakers"
  },
  {
    "id": "video_2",
    "video_url": "/data/videos/sample2.mp4",
    "description": "Activity video - label actions"
  }
]

صيغة المخرجات

تختلف المخرجات باختلاف الوضع:

وضع المقاطع:

json
{
  "id": "video_1",
  "annotations": {
    "scene_detection": [
      {
        "start": 0.0,
        "end": 5.2,
        "start_frame": 0,
        "end_frame": 156,
        "label": "indoor"
      }
    ]
  }
}

وضع الإطارات:

json
{
  "id": "video_1",
  "annotations": {
    "frame_quality": [
      {
        "frame": 120,
        "time": 4.0,
        "label": "good"
      }
    ]
  }
}

وضع الإطارات المفتاحية:

json
{
  "id": "video_1",
  "annotations": {
    "highlights": [
      {
        "frame": 450,
        "time": 15.0,
        "label": "goal",
        "note": "First goal of the match"
      }
    ]
  }
}

وضع التتبّع:

json
{
  "id": "video_1",
  "annotations": {
    "object_tracking": [
      {
        "id": "track_1",
        "label": "ball",
        "frames": [
          {"frame": 0, "bbox": {"x": 100, "y": 200, "w": 30, "h": 30}},
          {"frame": 1, "bbox": {"x": 105, "y": 198, "w": 30, "h": 30}}
        ]
      }
    ]
  }
}

صيغ الفيديو المدعومة

  • MP4 (موصى به)
  • WebM
  • MOV
  • OGG

تتبّع أجسام الفيديو مع الاستيفاء بين الإطارات المفتاحية

جديد في الإصدار 2.2.0

يدعم وضع التتبّع الآن الاستيفاء بين الإطارات المفتاحية، فيتيح للمُعلّقين تحديد مواضع الأجسام عند إطارات مفتاحية ويستوفي الإطارات الوسيطة تلقائيًّا. هذا يسرّع مهام تتبّع الأجسام بدرجة كبيرة.

yaml
annotation_schemes:
  - name: "tracking"

سير العمل

  1. انتقل إلى إطار مفتاحي وارسم مربع إحاطة حول الجسم
  2. تقدّم عدة إطارات وأعد وضع مربع الإحاطة
  3. يستوفي النظام تلقائيًّا المواضع للإطارات الوسيطة
  4. راجع المواضع المستوفاة وعدّلها عند الحاجة

مجموعة أوضاع التعليق الصالحة كاملةً هي: segment وframe وkeyframe وtracking وcombined.

ملاحظات تقنية

  • يستخدم Peaks.js لعرض الخط الزمني
  • عناصر فيديو HTML5 قياسية (بلا اعتماديات خادم إضافية)
  • يدعم الخط الزمني السحب للتحديد لإنشاء المقاطع

أفضل الممارسات

  1. استخدم مقاطع فيديو مضغوطة - الملفات الكبيرة تبطئ التحميل
  2. اضبط معدل الإطارات المناسب - طابِق video_fps مع معدل إطارات الفيديو الفعلي
  3. فعّل التنقل إطارًا بإطار - ضروري للتعليق الدقيق على مستوى الإطار
  4. استخدم التحكم في سرعة التشغيل - الحركة البطيئة تساعد في العمل التفصيلي
  5. قدّم تعريفات واضحة للمقاطع - حدّد ما الذي يشكّل حدود المقطع
  6. استخدم ألوانًا متمايزة - اجعل التصنيفات قابلة للتمييز بصريًّا
  7. راعِ ارتفاع الخط الزمني - زِده لمهام التقسيم المركّبة