السلام عليكم ورحمة الله وبركاته
همم، في البداية أود القول إنني كتبت هذا الدرس بعد أن علمت بأن خام ون بيس vfr فقلت في نفسي فلأكتب شيئاً يساعد معشر ون بيس رغم أنني لا أتابع هذا الأنيمي. لكن الأمر تطور وصار موضوعاً عاماً حول سرعة الفريمات؛ الميدان الذي يحير عنده أغلب المنتجين. إلى الموضوع دون أي إطالة,
ملاحظة: حين أقول 24 فأنا أقصد 23.976 وحين أقول 30 فأنا أقصد 29.70
CFR (Constant Frame Rate)i
نمط سرعة الفريمات التي تحصل عليها في فيديو تكون سرعة جميع فريماته متساوية. يعني الفرق الزمني بين جميع الفريمات يبقى ثابتاً على طول الفيديو.
VFR (Variable Frame Rate)i
نمط سرعة الفريمات التي تحصل عليها في أي فيديو لا ينطبق عليه التعريف السابق.
VFRaC (Variable Frame Rate assumed Constant)i
سرعة الفريمات الثابتة التي تجدها في فيديو كان vfr وتحول إلى cfr مع المحافظة على عدد فريماته وترتيبها.
Timestamps
أي فريم في أي فيديو عنده توقيتان: توقيت استخراجه من ملف الفيديو وتوقيت عرضه على الشاشة. ما يهمنا هنا هو توقيت عرضه على الشاشة وهو ما يسمى Presentation TimeStamp أو Timestamp بكل اختصار. في فيديو cfr يكون الفرق بين الـ Timestamp الخاصة بأي فريمين متتاليين ثابتاً أما في الـ vfr فيكون مختلفاً.
Timecode
ملف نصي يمكن استخراجه من الفيديو ويحتوي على جميع الـ Timestamp الخاصة بفريماته. هناك طريقتان لعرض هذا الملف:
الطريقة الأولى v1
كود:
# timecode format v1
Assume 23.976
45,84,29.9681
109,249,29.9681
السطر الذي يحتوي على Assume يحدد سرعة فريمات يُعتقد أن الفيديو يعمل عليها.
الأسطر الأخرى تحدد المقاطع التي تعمل على سرعة فريمات مختلفة عما بعد Assume.
الطريقة الثانية v2
كود:
# timecode format v2
0.000000
42.000000
83.000000
125.000000
167.000000
208.000000
250.000000
292.000000
333.000000
375.000000
.......
كل سطر يحدد توقيت ظهور الفريم المقابل له في الترتيب. يعني إن كان لديك 150000 فريم فستحصل على 150000 سطر.
ملاحظة: لا تستعملوا v1 سوى للتعرف على حقيقة ما يحدث داخل الفيديو وتحديد أماكن تغير سرعة الفريمات. أما دمج فيُستعمل لأجله الـ v2
120 FPS
كثير من خامات الأنيمي القديم تكون بصيغة avi لأن في قديم الزمان لم يكن يكن هناك حاويات متقدمة مثل mp4 أو متقدمة جداً مثل mkv. المشكلة هنا أن حاوي avi لا يدعم سرعة الفريمات المتغيرة. لهذا السبب يغير موفرو الراو اليابانيون إلى سرعة 120 fps (بشكل أكثر دقة هي 1001/120000) إذا كانت الحلقة vfr لأن هذه القيمة تساعد على الحفاظ على تغير سرعة الفريمات.
كيف؟
120 = 24×5 = 30×4 (مع العلم أن 24 و30 هي قيم سرعة الفريمات المنتشرة في خامات الأنيمي الياباني، هناك 25 و50 أيضاً لكن ليس في اليابان)
فحين يكون لدينا مقطع سرعة فريماته 24 نضيف لكل فريم 4 فريمات فارغة لا تحتوي على أي بيانات تسمى NULL وحين يكون لدينا مقطع سرعة فريماته 30 نضيف لكل فريم 3 فريمات NULL.
FPS & Avisynth & Fun
أي تغيير في سرعة الفريمات ينتج عنه إما تغيير لعدد الفريمات أو تغيير لمدة الفيديو. سنتحدث هنا عن بعض الأوامر الخاصة بالـ avisynth والتي لها علاقة بسرعة الفريمات:
AssumeFPS
يغيرسرعة الفريمات عبر تغيير مدة الفيديو ويحافظ على عدد الفريمات. يعني بكل بساطة، يجعل عرض الفيديو إما أسرع أو أبطئ.
ChangeFPS
يغير سرعة الفريمات عبر إضافة (عن طريق الاستنساخ) أو حذف عدد من الفريمات دون التأثير على مدة الفيديو.
ConvertFPS
يغير سرعة الفريمات عن طريق دمج فريمات. بدل الاستنساخ، تدمج فريمات متجاورة لتتكون فريمات جديدة وتحذف أخرى. هذا الأمر لا يغير مدة الفيديو.
SelectEvery
يحدد الفريمات التي سيقع إنتاجها من ضمن كل مجموعة فريمات. ما تحتاج معرفته حوله هو أنه عندما يكون لديك 120fps تستعمل selecevery(4)i للحصول على المقاطع ذات سرعة 29.70 و selectevery(5)i للحصول على المقاطع ذات سرعة 23.976
هناك فلاتر الـ Decimation أيضاً، لكنني لن أتحدث عنهم هنا والآن، ربما إن خطر لي كتابة موضوع عن الـ IVTC
-----
أمر مهم يجب أن نعلمه، الترجمة والصوت كلٌّ منها له timestamps خاص به وكل منها يسبح وحده في برِّه الخاص به والمنفصل عن بر الفيديو. فمثلاً، تتر الترجمة يظهر في اللحظة 0:06:12.721 ويصدر صوت انفجار في اللحظة 0:03:43.49 وكلاهما منفصلين عن الفيديو
الآن، إن أردت تحويل فيديو VFR إلى CFR فإن الصوت والترجمة لن تكونا متزامنتين مع المشاهد.
سأطرح هنا الحل الأفضل لهذه المشكلة: إنتاج فيديو VFR
استخراج ملف التايم كود
هناك طرق عديدة لفعل هذا، سأطرح بعضها:
ffms2: استدع الفيديو بواسطة هذا الأمر داخل برنامجAvsP:
كود:
import("x:\yzt\ffms2.avsi")i
ffmpegsource2("vfr raw.mkv",timecodes="tcfile.txt")
ثم اضغط F5 وستجد ملف الـ timecodes باسم tcfile.txt
mkv2vfr: نصب haali matroska splitter ثم افتح prompt window واتجه إلى C:\Program Files\Haali\MatroskaSplitter واكتب الأمر التالي:
كود:
mkv2vfr "My vfr raw.mkv" "output.avi" "tcfile.txt"
ستجد ملف الـ timecodes باسم tcfile.txt، أما output.avi فيمكنك تجاهله ...
aegisub:
هذه الطريقة لا تنفع إلا إذا كان لديك ملف فيديو في حاوي mkv. افتح الفيديو من الـ mkv ثم video--> save timecodes file واحفظ الملف بصيغة txt
+ تأكد من أنك تستخدم آخر إصدار للإيجي سب.
ملاحظة: ملفات التايم كود من نوع v2 يصعب فهمها لذا نحولها إلى v1 عادة. كيفية التحويل مشروحة في فقرة VFR & 120FPS avi في نهاية الموضوع
VFR & softsubs
إن كنت تنتج سوفت سب بالكامل (
يعني كل شيء سوفت حتى التايب)
فأنتج كالعادة، المهم أن تتأكد من استخدام فلتر ffms2 لاستدعاء الفيديو عند الإنتاج(للحصول على جميع الفريمات وبالترتيب الأصلي، عكس DirecShowSource المتخلف).
استعمال فلتر ffms2 يكون على هذا الشكل:
loadplugin("x:\yzt\ffms2.dll")
i
audio=FFAudioSource("x:\blah\lol.mp4")ii
video=FFVideoSource("x:\blah\lol.mp4")i
AudioDub(video,audio)i
ثم حين تدمج ملف الترجمة:
افتح الـ mkvmerge واستدع كل شيء (الفيديو، الصوت، الترجمة...) بواسطة add
ثم حدد track الفيديو ومن Timecodes في الأسفل أدخل مسار tcfile.txt
ادمج كل شيء وستجد الترجمة والصوت متزامنتين مع الفيديو.
صورة توضيحية للخطوة الأخيرة:
أما إذا كان عندك أشياء هارد سب تريد حرقها مع الفيديو (كارا أو تايبست) فاقرأ الفقرة التالية.
VFR & arachaic hardsubs
هذه الفقرة تنطبق على من ينتج التايبست هارد والترجمة سوفت كما تنطبق على من لا يزال ينتج كل شيء هاردسب في 2011.
إن كان الراو الذي تعمل عليه (وورك راو أو أياً كان) بصيغة mkv فلا حاجة لاستدعاء ملف timecodes داخل الإيجي. أما إن لم تكن الحال هكذا فيجب استدعاء ملف التايم كود الذي استخرجته من video --> Open Timecodes file
اعمل التايب أو الكارا وما تشاء ثم حين تنهي العمل بالإيجي اذهب إلى file --> export subtitles وستظهر لك هذه النافذة:
حدد Transform Framerate ثم تأكد من اختيار Variable كما هو موضح في الصورة. لا تعبث بأي شيء آخر ^^ ثم اضغط على Export
معلومات أخرى بالإنكليزية هنا: http://docs.aegisub.org/manual/Video...ramerate_video
VFR & MP4
1 حمل هذا البرنامج ونصبه:
http://strawberryperl.com/
2 حمل هذا الملف وفك الضغط في الملف C:\strawberry\perl\bin
3 انسخ الحلقة الـ vfr وملف التايم كودز الذي اسخرجته في نفس المسار
4 افتح prompt window وتوجه إلى المسار السابق بواسطة:
كود:
cd C:\strawberry\perl\bin
5
اكتب ما يلي في الـ cli :
كود:
perl tc2mp4 -i VFRaC-file.mp4 -t timecode.txt -o vfr-file.mp4
VFRaC-file.mp4: هو ملف الفيديو الذي كان vfr وحين أنتجته بالـ avisynth وباستعمال فلتر ffms2 صار cfr لكن مع المحافظة على جميع الفريمات وترتيبها
timecode.txt: ملف التايم كود الذي استخرجته من الراو ذو سرعة الفريمات المتغيرة.
vfr-file.mp4 :الحلقة ذات سرعة فريمات متغيرة والتي يتزامن الصوت فيها مع الفيديو ^^--
VFR & 120fps avi
حمل هذه الأداة: avi_tc
هناك واجهة رسومية لن أتحدث عنها لأنني أستعمل الـ prompt window
وظيفة هذه الأداة هي استخراج ملف timecodes من ملفات avi التي تكون سرعة فريماتها 120 كما تستخرج لك راو جديد يحتوي على جميع الفريمات الأصلية، لكن بسرعة مختلفة (لا تهم سرعة فريمات الراو الجديد ما دمت تملك ملف الـ timecodes)
لاستخراج ملف الـ timecode والراو :
كود:
cfr2tc "source-120fps.avi" "output-decimated-raw.avi" "timecode file.txt"
لتحويل ملف الـ timecodes من v2 إلى v1:
كود:
tcConv "input-tc" "output-tc" -assumed -max_diff
input-tc: ملف الـ timecodes بصيغة v2 الأصلي والتي يصعب على الإنسان التعامل معها
output-tc: ملف الـ timecodes بصيغة v1 والتي تكون التعامل معها وفهمها أسهل بكثير
assumed: سرعة الفريمات التي يُعتقد أن الفيديو يعمل عليها. يمكن وضعها 24000/1001 أو 30000/1001
max_diff: يحدد أقصى فرق بين توقيت ظهور فريمين لهما نفس السرعة
الخياران الأخيران يسمحان بعرض أسهل للملف لأنه يمكن أن تحصل على آلاف من القيم. مثال:
كود:
# timecode format v1
Assume 23.976024
0,30,29.970030
35,1174,23.976022
1183,1312,29.970030
1321,1620,23.976029
1721,1735,23.976031
1760,1769,29.970030
1794,1798,29.970030
1859,1863,23.976020
1872,1881,29.970030
1910,1924,29.970030
1945,1949,29.970030
1954,1998,29.970030
....
المقاطع الملونة بالأحمر يمكن أن نضعها مع مجموعة 23.976024 بواسطة التلاعب بقيم assumed وmax_diff
VFR & AFX
الأفتر مثل الـ avisynth لا يميز بين cfr وvfr لذا عليك إعطاء الأفتري وورك راو ذو سرعة فريمات ثابتة ثم الإنتاج بسرعة فريمات متغيرة بواسطة ملف التايم كودز، هذا في حالة أن الأمر يقتصر على المحاكاة. أما إن كنت تريد عمل كارا بالأفتر فهنا سيدخل الصوت في اللعبة. عليك إنتاج مقطع الكارا cfr والبقية تنتجها vfr واختر أكبر سرعة فريمات في المقطع.
VFR & you
قد يسأل بعضكم لماذا أنتج vfr؟
الجواب: إنتاج حلقات vfr ليس أمراً اعتباطياً بل حسب المسلسل. إن كان المسلسل vfr فالأفضل أن تنتجه vfr كي تكون الحركة في الفيديو انسيابية. إن فرضت سرعة فريمات ثابتة فستكون الحركة غير انسيابية سواء أخذت سرعة الفريمات القصوى أو الدنيا.
+ من غير اللائق أن تنتج cfr لشيء vfr، هذا قد يثير تذمر وسخرية البعض وسيكون تزييفاً لحقيقة الأشياء. Indeed
شيء أخير: سرعة فريمات الأنيمي الياباني تكون إما 24 أو 30 أو الاثنين معاً
------
Share the pain
في أمان الله
المفضلات