تحويل التيم كود إلى رقم إطار
انتقلوا من رمز الوقت إلى رقم الإطار وبالعكس: 00:01:00:00 بمعدل 30 إطارا في الثانية هو الإطار 1800 مع العد من الصفر، فتقع القطعات والعلامات والترجمات في مكانها تماما. مجاني في المتصفح.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الاتجاه
- To frames
- معدل الإطارات
- 30
- الرمز الزمني
- 00:01:00:00
- الإطارات
- 1,800
- الساعات
- 0
- الدقائق
- 1
- الثواني
- 0
ينتقل محررو الفيديو وملوّنو الصورة ومشغّلو مراقبة الجودة ومهندسو خطوط الإنتاج باستمرار بين رمز الوقت المقروء بأسلوب SMPTE وعدادات الإطارات الصحيحة التي تفهرسها برامج المونتاج ومزارع التصيير وأدوات الترجمة. قد يضع خطأ إطار واحد في خانة FF أو عدم تطابق معدل الإطارات القطع على الإطار الخطأ، أو يكسر قائمة EDL، أو يزيح تعليقًا ثانية كاملة. يقبل هذا المحوّل سلسلة غير إسقاطية HH:MM:SS:FF مع معدل إطارات صحيح للمشروع ويعيد رقم الإطار الإجمالي من الصفر، أو يأخذ عدّاد إطارات كاملًا ويعيد بناء رمز وقت مبطّن بالأصفار.
كيف يقابل رمز الوقت غير الإسقاطي رقم الإطار الإجمالي
يرسم رمز الوقت غير الإسقاطي بأسلوب SMPTE كل إطار بالساعات والدقائق والثواني وخانة إطار داخل الثانية الحالية. عند معدل إطارات صحيح ثابت fps تساهم كل ثانية مكتملة بـ fps إطارًا بالضبط، وكل دقيقة بستين ثانية، وكل ساعة بثلاثة آلاف وست مئة ثانية. لذلك يضرب التحويل جزء الساعة من التسمية في fps ويضيف خانة الإطار: frames يساوي ((الساعات × 3600 + الدقائق × 60 + الثواني) × fps) + FF.
يبدأ العدّ من الصفر عند 00:00:00:00 كإطار صفر، فـ 00:00:01:00 عند ثلاثين إطارًا في الثانية هو الإطار ثلاثون، و00:01:00:00 عند ثلاثين fps هو الإطار ألف وثمان مئة. المسار العكسي يفكك بالقسمة الصحيحة والباقي: FF هو frames مقياسًا modulo fps، ثم تُقسَّم الثواني الصحيحة المتبقية إلى ساعات ودقائق وثوانٍ بساعة الأساس الستين المعتادة. ينفّذ هذا الطرف تلك الحسابات غير الإسقاطية فقط؛ ولا يطبّق قواعد تخطّي الإسقاط NTSC لتسعة وعشرين فاصلة تسعة سبعة، لأن تلك القواعد تغيّر التسمية دون أن تغيّر صيغة عدّ الإطارات الأساسية بالطريقة نفسها.
اختر الـ fps الصحيح المطابق لمشروعك (أربعة وعشرون، خمسة وعشرون، ثلاثون، ثمانية وأربعون، خمسون، ستون وما شابه) وحافظ على تسميات متسقة عبر كل أداة تقرأ الوسائط نفسها.
أين تفيد الدقة على مستوى الإطار
يحوّل مساعدو التحرير كثيرًا أوراق الإشارات وملاحظات المنتجين المكتوبة بصيغة HH:MM:SS:FF إلى أرقام إطارات للعلامات، بينما يفعل المهندسون العكس عند تسجيل نطاقات التصيير لمزرعة لا تفهم إلا الأعداد الصحيحة. تحوّل خطوط ترجمة الشاشة نقاط الدخول والخروج حتى تقع إشارات SRT أو VTT على إطارات قانونية لـ fps التسليم. يمكن لسكربتات مراقبة الجودة رفض قيم FF غير القانونية قبل مغادرة الحزمة المنشأة، فتلتقط خطأ لصق شائعًا كان ليمرّ على مدقق نصي فقط.
تستخدم أنظمة LMS ومختبرات مدارس السينما مسار المتصفح المجاني ليتدرّب الطلاب على الحساب غير الإسقاطي دون تثبيت حاسبات سطح مكتب تختلف على العدّ من الصفر. ثبّت الأمثلة الذهبية في التكامل المستمر، واجعل framerate صريحًا في كل طلب، فتحصل على أعداد إطارات قابلة للتكرار لقوائم EDL وملاحظات اليوميات وعمال الحافة دون إقامة NLE كامل فقط لحساب الساعة.
حالات الاستخدام
أوراق إشارات التحرير إلى علامات الإطارات
حوّل ملاحظات المنتِج بصيغة HH:MM:SS:FF إلى أرقام إطارات إجمالية للعلامات والنطاقات ومهام التصيير عند fps المشروع المعلن.
التحقق من الترجمة ومراقبة الجودة
ارفض خانات الإطار غير القانونية (FF ≥ fps) قبل التعبئة، وأعد بناء رمز وقت مبطّن من نقاط دخول وخروج صحيحة لأدوات التصدير.
الأسئلة الشائعة
كيف أحوّل عدّاد إطارات إلى رمز وقت؟
تعيد الاستجابة HH:MM:SS:FF مبطّنًا بالأصفار ومكوّنات الساعة والدقيقة والثانية والإطار.
ماذا يحدث إذا كانت خانة الإطار أكبر من معدل الإطارات؟
يجب أن يحقق FF الشرط 0 ≤ FF < framerate؛ مثلًا 00:00:01:30 غير قانوني عند 24 fps. الإدخال غير الصالح لا يُحاسب.
هل هذا إسقاط إطارات أم غير إسقاطي؟
غير إسقاطي فقط. تُقبل الفاصلة المنقوطة في سلسلة الإدخال كفواصل، لكن لا تُطبَّق جداول تخطّي الإسقاط NTSC. استخدم fps الصحيح لمشروعك.
كم إطارا في الدقيقة بمعدل 30 إطارا في الثانية؟
الدقيقة تساوي 1800 إطار. ويبدأ العد من 00:00:00:00 بوصفه الإطار صفر، لذلك يكون 00:00:01:00 هو الإطار 30 و00:01:00:00 هو الإطار 1800 بهذا المعدل.
ما معدلات الإطارات التي يمكن استخدامها؟
أي عدد صحيح من 1 إلى 240 إطارا في الثانية، مثل 24 أو 25 أو 30 أو 48 أو 50 أو 60. اختاروا معدل مشروعكم واستخدموه نفسه في كل أداة تقرأ المادة ذاتها.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/video/timecode-convert-frames \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"direction":"to_frames","framerate":30,"timecode":"00:01:00:00"}'const res = await fetch("https://api.kit.forhosting.com/video/timecode-convert-frames", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"direction": "to_frames",
"framerate": 30,
"timecode": "00:01:00:00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/timecode-convert-frames",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"direction": "to_frames",
"framerate": 30,
"timecode": "00:01:00:00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/timecode-convert-frames", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"direction":"to_frames","framerate":30,"timecode":"00:01:00:00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"direction":"to_frames","framerate":30,"timecode":"00:01:00:00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/timecode-convert-frames", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"direction": "to_frames",
"framerate": 30,
"timecode": "00:01:00:00"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.timecode_convert_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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
عندما تكون خانة الإطار FF أكبر من أو تساوي معدل الإطارات تفشل الطلبية بـ invalid_input بدل الالتفاف بصمت. المنطق النقي نفسه يشغّل ودجة المتصفح المجانية ومسار API المدفوع مسبقًا، فلا تختلف فحوص التحرير والأتمتة في الحساب.
عقد الإدخال وقواعد التحقق وحقول الاستجابة
يجب أن يكون framerate عددًا صحيحًا من واحد إلى مئتين وأربعين إطارًا في الثانية. قد تمتد الساعات من صفر إلى تسعة آلاف وتسع مئة وتسعة وتسعين؛ ويجب أن تكون الدقائق والثواني بين صفر وتسعة وخمسين. تُطبَّق القاعدة التحريرية الحرجة على خانة الإطار: FF يجب أن يحقق صفرًا أقل من أو يساوي FF وأن يكون FF أقلّ صارمًا من framerate. العكس بـ frames ألف وثمان مئة ونفس fps يعيد 00:01:00:00. أرسل جسم JSON بطريقة POST يتضمن direction وframerate وإما timecode أو frames. الاتجاه to_frames (والأسماء frames وtc_to_frames) يتطلّب سلسلة رمز وقت HH:MM:SS:FF؛ تُقبل النقطتان أو الفاصلة المنقوطة فواصل، لكن الحساب دائمًا غير إسقاطي. الاتجاه to_timecode (والأسماء timecode وframes_to_tc) يتطلّب حقل frames صحيحًا غير سالب. إذا لصق أحد 00:00:01:30 بينما المشروع بأربعة وعشرين fps، يرفض المعالج الاستدعاء بـ invalid_input مع رسالة أن رقم الإطار في رمز الوقت يتجاوز معدل الإطارات؛ ولا تُحاسب تلك الإخفاقات. عند النجاح يعيد الجسم direction وframerate، وسلسلة رمز وقت موحّدة مبطّنة بالأصفار، وعدد frames الكلي، والمكوّنات المفصّلة للساعات والدقائق والثواني والإطار، وصيغة قصيرة تعيد تأكيد الهوية غير الإسقاطية. مثال: direction to_frames وframerate ثلاثون وtimecode 00:01:00:00 يعطي frames ألفًا وثمان مئة. يقبل المعالج أسماء حقول اختيارية (fps وtc وtotal_frames وmode) حتى تستخدم السكربتات أسماء مألوفة بلا طبقة تعيين.
أين تثبت واجهة API لرمز الوقت بدقة الإطار قيمتها
ولأن التنفيذ pure parse من المستوى A، تكلّف كل مكالمة ناجحة السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة، والتحقق الفاشل لا يستهلك الرصيد.
حالات التكامل
الصف واختبارات وحدات خط الإنتاج
امنح الطلاب ومهام CI مرجعًا غير إسقاطي حتميًا يطابق الإطار صفر عند 00:00:00:00 في المتصفح وواجهة API.
أسئلة تقنية
كيف أحوّل HH:MM:SS:FF إلى رقم إطار إجمالي؟
أرسل direction to_frames ومعدل إطارات صحيحًا (fps) ورمز وقت مثل 00:01:00:00. تعيد API القيمة frames = ((H×3600+M×60+S)×fps)+FF مع رمز وقت موحّد ومبطّن.
كم يكلف محوّل رمز الوقت إلى رقم الإطار؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل مكالمة ناجحة؛ الإدخال غير الصالح لا يُحاسب.