طريقة استخراج كل إطار من الفيديو
يفكّك KIT الفيديو إلى سلسلة صور ثابتة، إطارًا واحدًا كل فترة زمنية تحددها، فتحصل على مجموعة صور مستقلة تمثّل محتوى المقطع لحظة بلحظة. يناسب من يحتاج تحليل مشاهد فيديو صورة صورة، أو انتقاء أفضل لقطة منه يدويًا لاحقًا.
شغّلها أونلاين
شغّل هذه المهمة على خوادمنا باستخدام حسابك. الأدوات المجانية تعمل داخل متصفحك، أما هذه فتُخصم من رصيدك في KIT حسب السعر الموضّح أعلاه.
متى تحتاج صورًا لا فيديو
فحص جودة تصوير مقطع كامل يحتاج مراجعة كل لحظة فيه، وهو أسهل على شكل صور متتالية يُتصفّح بينها بسرعة من إعادة تشغيل الفيديو مرارًا. مراقبة تغيّر مشهد بمرور الوقت أو انتقاء أفضل لقطة من عدة ثوانٍ متشابهة أمثلة أخرى يسهّلها استخراج الإطارات بدل التوقف اليدوي المتكرر أثناء تشغيل الفيديو.
كيف يتم الاستخراج
ترفع الفيديو وتحدد معدل الاستخراج — إطار كل ثانية مثلًا — فتُصدِر الأداة مجموعة صور مرقّمة بترتيب ظهورها. تحصل على رقم مهمة task_id فور الرفع، وتصلك الصور عبر webhook أو من الصفحة نفسها حين تكتمل المعالجة، كل صورة بجودة الفيديو الأصلية.
السعر وحالة الإطلاق
التكلفة $0.077 عن كل طلب زائد $0.0045 عن كل دقيقة من الفيديو، أي نحو $0.12 لمقطع مدته عشر دقائق. الوظيفة قيد الإطلاق حاليًا وستعمل عبر هذه الصفحة قريبًا جدًا، ثم يتاح استدعاؤها عبر الـAPI لاحقًا لمن يحتاج معالجة عدد كبير من المقاطع.
حالات الاستخدام
مراجعة جودة تصوير موقع مشروع
تستخرج مؤسسة النخيل للمقاولات إطارات من فيديو تفقّد موقع مشروعها كل ثانية، فتراجع الفريق الهندسي كل لقطة بسرعة بدل إيقاف الفيديو يدويًا عند كل مشهد يهمّها.
انتقاء أفضل لقطة لصورة إعلانية
يستخرج مصوّر منتجات في الرياض عشرات الإطارات من لقطة فيديو واحدة، ثم يختار أوضح إطار منها ليستخدمه صورة إعلانية بدل إعادة التصوير الثابت من جديد.
تحليل حركة عميل داخل متجر
تستخرج شركة الواحة للتجارة المحدودة إطارات من كاميرا مراقبة متجرها لدراسة حركة الزبائن أمام رف معين، صورة كل بضع ثوانٍ، دون مراجعة الفيديو الكامل مرارًا.
الأسئلة الشائعة
هل يمكن استخدام الأداة الآن؟
ليس بعد. الوظيفة قيد الإطلاق حاليًا وستعمل عبر هذه الصفحة قريبًا جدًا، ثم عبر API لاحقًا.
هل يمكن التحكم في عدد الإطارات المستخرجة؟
نعم، تحدد المعدل الزمني بين إطار وآخر، فتحصل على عدد صور يناسب حاجتك دون استخراج كل إطار في الفيديو بلا داعٍ.
بأي صيغة تصل الصور المستخرجة؟
صور ثابتة مرقّمة بترتيب ظهورها في الفيديو، بجودة الملف الأصلي، جاهزة للتحميل دفعة واحدة.
كم تكلفة استخراج إطارات من فيديو؟
$0.077 لكل طلب زائد $0.0045 عن كل دقيقة من الفيديو، أي نحو $0.12 لمقطع مدته عشر دقائق.
هل يُحتفَظ بالفيديو الأصلي بعد الاستخراج؟
لا. يُستخدم الملف فقط لإنتاج الصور المطلوبة ثم يُستبعد نهائيًا.
ما أقصى حجم ومدة للفيديو المرفوع؟
حتى 500 ميغابايت وحتى 60 دقيقة في الطلب الواحد.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/video/frames \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/video/frames", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/frames",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/frames", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/frames", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"audio": "https://ejemplo.com/audio.mp3"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.frames",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |