
בקצרה
- מה קרה: לקובץ חסר חלק קטן בשם moov, ה“מפה” שאומרת לנגן כמה הסרטון ארוך ואיפה יושב כל פריים (כל תמונה בודדת בסרטון). המצלמה כותבת אותו בסוף ההקלטה, ואם היא נכבתה לפני כן, הוא לא נכתב.
- מה לא לעשות עכשיו: אל תפרמטו את הכרטיס (פרמוט מוחק הכול), אל תמשיכו לצלם עליו, ואל תנסו “להמיר” את הקובץ (לשמור אותו מחדש בפורמט אחר). ממיר לא יכול לקרוא קובץ בלי מפה.
- מה כן: קודם בדקו שהקובץ הגיע שלם. אם כן, בנו לו מפה חדשה בעזרת קליפ תקין מאותה מצלמה ותוכנה חינמית. הצעדים למטה.
- לא רוצים להתעסק עם זה? שלחו לי את הקובץ. הבדיקה בחינם, ואם לא הצלחתי לשחזר, הכסף חוזר. איך שולחים.
קודם כול: הקובץ שלם?
אותה הודעה מופיעה בשני מצבים הפוכים, ולכן זו הבדיקה הראשונה.
- הקובץ הגיע ישירות מהכרטיס: ההקלטה נקטעה, אבל החומר בפנים ואפשר לתקן אותו. עברו לצעדים שלמטה.
- הקובץ הגיע בהורדה, ב-WeTransfer, בסנכרון לדרייב או בהעתקה: השוו את הגודל למקור. אם הוא קטן יותר, או שנעצר בדיוק על מספר עגול של מגה-בייט, ההעברה נקטעה והסוף של הקובץ ריק. שום תוכנה לא בונה חומר שלא הגיע. בקשו את הקובץ שוב. מקרה שהגיע אליי: קובץ שנעצר בדיוק על 1,050 מגה-בייט. כשבדקתי אותו, 88 אחוז ממנו היו ריקים.
מה עושים, צעד אחר צעד
- העתיקו הכול למחשב. את הקובץ הפגום, ובאותה הזדמנות גם קליפ תקין מאותו כרטיס. מהרגע הזה עבדו רק על העותקים. הכרטיס נשאר בצד.
- הכינו “קליפ לדוגמה”. הקלטה תקינה מאותה מצלמה, באותן הגדרות בדיוק שבהן צולם הקובץ הפגום: אותה רזולוציה (גודל התמונה, למשל 4K), אותו מספר פריימים לשנייה (25, 50 או 100), אותה איכות הקלטה, ואותו סוג דחיסה (H.264 או HEVC, ב-DJI וב-GoPro אפשר לעבור ביניהם בהגדרות). הכי פשוט: קליפ שצילמתם באותו יום, לפני או אחרי הקובץ שנפגע, בלי לשנות הגדרות באמצע. הקליפ שהעתקתם מהכרטיס בדרך כלל מתאים. אם אין כזה, הכניסו כרטיס למצלמה, סגרו את מכסה העדשה, והקליטו 30 שניות.
- הריצו תוכנה חינמית בשם untrunc. היא לוקחת את המפה מהקליפ התקין ובונה לפיה מפה חדשה לקובץ הפגום. הורידו כאן (לווינדוס, תוכנה רגילה עם כפתורים, בלי להקליד פקודות). בעמוד שנפתח הורידו את הקובץ untrunc_x64.zip, חלצו אותו, והפעילו את untrunc-gui.exe (לא את untrunc.exe, זו הגרסה בלי החלון). התוכנה מתאימה ל-DJI, GoPro ורוב המותגים. בחרו את הקליפ לדוגמה, בחרו את הקובץ הפגום, והריצו. אם הקובץ שיצא לא נפתח, הריצו עוד פעם, זה קורה. איך יודעים שזה עבד: נוצר קובץ MP4 חדש, והוא נפתח בנגן.
- בדקו את הקובץ כולו, לא רק את ההתחלה. האורך צריך להתאים למה שצילמתם. גללו לחמש-שש נקודות לאורך הסרטון, בעיקר לקראת הסוף. בכל נקודה עצרו, הריצו כמה שניות, ובדקו שהתמונה זזה חלק ושהשפתיים תואמות לדיבור. אם התמונה קופצת או הסאונד זז: הקליפ לדוגמה לא תואם מספיק. חפשו קליפ שתואם יותר והריצו שוב. אל תחליפו תוכנה.
למה זה קרה
קובץ וידאו מורכב משני חלקים: החומר עצמו, שהמצלמה כותבת כל הזמן, ומפה קטנה בשם moov, שאומרת לנגן כמה הקובץ ארוך ואיפה יושב כל פריים. המצלמה כותבת את המפה אחרונה, רק כשההקלטה מסתיימת כמו שצריך. אם היא נכבתה לפני כן, נשאר חומר בלי מפה, והנגן מסרב לפתוח אותו.
מה לא יעזור
- שינוי שם או סיומת.
- ממירים, נגנים ש“מתקנים תוך כדי הניגון”, ופקודות ffmpeg כמו
-c copyאו-movflags faststart. כל אלה צריכים מפה קיימת כדי לקרוא את הקובץ בכלל. הם יודעים להזיז מפה, לא לבנות חדשה.
שאלות נפוצות
- ffmpeg יכול לתקן את זה? לא. המפה בכלל לא נכתבה, ו-ffmpeg צריך אותה כדי לקרוא את הקובץ. צריך תוכנה שבונה מפה חדשה לפי קליפ לדוגמה, כמו untrunc.
- הקובץ בגודל הנכון, ובכל זאת לא נפתח? סימן שההקלטה נקטעה והחומר בפנים. חזרו לצעדים שלמעלה.
- צריך ידע טכני כדי לעשות את זה? לא. התוכנה נראית כמו כל תוכנה אחרת: פותחים אותה, בוחרים שני קבצים, ולוחצים על כפתור. לא צריך להקליד שום דבר. מה שדורש תשומת לב הוא בדיקת הגודל בהתחלה, ובדיקת הסרטון בסוף.
אם נתקעתם
הקובץ גדול? גם הריצה השנייה יצאה מקרטעת? או שפשוט אין לכם זמן להתעסק עם זה? שלחו לי קישור לקובץ ולקליפ תקין מאותה מצלמה. קודם כול אני בודק אם החומר בכלל נמצא בקובץ, ואומר לכם בדיוק מה המצב. הבדיקה הזאת בחינם.
אם יש מה לשחזר ותרצו להמשיך, אתם מקבלים מחיר לפי הקובץ. משלמים, ואז העבודה מתחילה. ואם לא הצלחתי לשחזר, הכסף חוזר, כולו או חלקו, לפי התוצאה.
מעדיפים מייל? avihaiteram@gmail.com
מי אני
אביחי תרם, צלם ועורך וידאו. אני מצלם על Sony FX3 ועובד עם קבצי מצלמה כאלה כל יום, אז אני יודע איך מצלמה כותבת אותם ומה נשבר כשהיא נכבית באמצע, וכבר החזרתי לחיים קבצים כאלה מסוני ומ-DJI.
שלחו לי קובץ שלא נפתח: הבדיקה הראשונה תמיד בחינם, ואם לא הצלחתי לשחזר, הכסף חוזר. אפשר למצוא אותי גם באינסטגרם: @avihai.teram.