Duration คือระยะเวลาที่สิ่งใดสิ่งหนึ่งคงอยู่ ในไฟล์สื่อ Duration หมายถึงเวลารวมที่เล่นได้ทั้งหมด Duration ของวิดีโอคือระยะเวลาที่วิดีโอเล่นตั้งแต่ต้นจนจบ และ Duration ของเสียงก็มีความหมายเดียวกันสำหรับเพลงหรือไฟล์บันทึกเสียง
คุณมักจะเห็นตัวเลขนี้ในโปรแกรมเล่นสื่อของคุณเป็นเวลาโดยรวม ในข้อมูลเมตา ข้อมูลเดียวกันนี้จะแสดงอยู่ในฟิลด์ชื่อ Duration
ไฟล์ใดที่มีรายการนี้อยู่
Duration จะมีอยู่ในไฟล์ที่เล่นตามเวลา ซึ่งหมายถึงไฟล์เสียงและวิดีโอ ไฟล์รูปนิ่งและเอกสารข้อความมักจะไม่มีฟิลด์ Duration
รูปภาพเคลื่อนไหวเป็นกรณีพิเศษ ไฟล์ GIF จะเก็บค่าหน่วงเวลา (delay) ของแต่ละเฟรมแต่ไม่มีเวลารวม ExifTool ยังคงรายงานค่า Duration สำหรับการเล่นภาพเคลื่อนไหวครบหนึ่งรอบ
แหล่งที่มาของค่า
รูปแบบไฟล์บางชนิดจะเก็บความยาวเวลาโดยตรง รูปแบบอื่นจะเก็บค่าที่ซอฟต์แวร์ใช้คำนวณความยาวเวลา
- MP4 และ MOV: ส่วนหัวของวิดีโอจะเก็บค่า time scale และ duration ไว้ ค่า time scale คือจำนวนหน่วยเวลาใน 1 วินาที และ duration คือจำนวนของหน่วยเวลาเหล่านั้น
- MKV และ WebM: ข้อมูลของ segment สามารถมี element
Durationแบบเลือกได้ โดยนับเป็นติ๊ก (tick) ตามค่าเริ่มต้น 1 ติ๊กเท่ากับ 1 มิลลิวินาที - MP3: แท็ก ID3 สามารถมีเฟรม
TLENซึ่งเก็บความยาวเวลาเป็นมิลลิวินาที ExifTool คำนวณความยาวเวลาจากค่าอื่น เช่น ขนาดไฟล์และบิตเรต - FLAC: ไฟล์จะเก็บจำนวนตัวอย่างทั้งหมด (total samples) และอัตราการสุ่มตัวอย่าง (sample rate) ซอฟต์แวร์คำนวณความยาวเวลาจาก 2 ค่านี้ และหากค่ารวมเป็น
0หมายความว่าไม่ทราบจำนวน - WAV: ExifTool คำนวณความยาวเวลาจากจำนวนไบต์เฉลี่ยต่อวินาทีและขนาดไฟล์
ลักษณะของค่าเป็นอย่างไร
ความยาวเวลาเดียวกันอาจแสดงออกมาได้หลายรูปแบบ ขึ้นอยู่กับโปรแกรมที่อ่านไฟล์:
00:05:15: ชั่วโมง นาที และวินาที ไฟล์นี้เล่นได้นาน 5 นาที 15 วินาที15.23 s: วินาที พร้อมแสดงหน่วย200.541000: ตัวเลขที่ไม่มีหน่วย โปรแกรม ffprobe จากโปรเจกต์ FFmpeg แสดง Duration แบบนี้ โดยมีตัวเลขหลังจุดทศนิยม 6 ตำแหน่ง ตัวเลขนี้หมายถึง 200.541 วินาที หรือประมาณ 3 นาที 21 วินาทีN/A: ในรูปแบบผลลัพธ์เริ่มต้น ffprobe จะแสดงค่านี้เมื่อไม่มี Duration ส่วนรูปแบบผลลัพธ์แบบ JSON และ XML จะไม่ใส่ Duration ลงไปเลยแทน
ตัวเลขที่ไม่มีหน่วยไม่ได้หมายความว่าเป็นวินาทีเสมอไป เฟรม TLEN นับเป็นมิลลิวินาที และค่า duration_ts ใน ffprobe นับเป็นหน่วยของtime base ของสตรีม ตรวจสอบให้แน่ใจว่าตัวเลขนั้นมาจากฟิลด์ใด
เหตุใดโปรแกรมจึงแสดงระยะเวลาไม่เท่ากัน
โปรแกรมต่างกันอาจแสดง Duration ต่างกันสำหรับไฟล์เดียวกัน และทั้งสองโปรแกรมอาจไม่ผิดด้วยกันทั้งคู่ ต่อไปนี้คือ 4 สาเหตุ:
- การปัดเศษ: โปรแกรมเล่นที่แสดงเฉพาะจำนวนวินาทีเต็มจะปัดค่า
200.541ขึ้นหรือลง - แทร็กแยกกัน: ภาพและเสียงมีแทร็กแยกจากกัน และแต่ละแทร็กมี Duration ของตัวเอง ในไฟล์ MOV ค่า Duration ของวิดีโอจะอ้างอิงจากแทร็กที่ยาวที่สุด
- เวลาเริ่มต้น: แต่ละสตรีมสามารถมีเวลาเริ่มต้นของตัวเองได้ FFmpeg สามารถวัดตั้งแต่เวลาเริ่มต้นที่เร็วที่สุดจนถึงเวลาสิ้นสุดที่ช้าที่สุด ดังนั้นหากมีการเริ่มเล่นช้ากว่าแทร็กอื่น เวลารวมอาจยาวขึ้น
- การคาดคะเน: ไฟล์อาจมีบิตเรตแต่ไม่มี Duration FFmpeg จะประมาณค่า Duration จากบิตเรตและขนาดไฟล์ แล้วเตือนว่าผลลัพธ์อาจไม่แม่นยำ
ทำไมมันจึงสำคัญ
Duration ช่วยให้คุณตรวจสอบไฟล์ได้โดยไม่ต้องเล่นไฟล์ หากคุณคาดว่าจะได้คลิปยาว 5 นาที 15 วินาที แต่กลับเห็นค่า 15.23 s ไฟล์นั้นอาจไม่ใช่ไฟล์ที่คุณต้องการ
Duration ยังเกี่ยวข้องกับค่าอื่นๆ FFmpeg สามารถคำนวณบิตเรตรวมจากขนาดไฟล์และ Duration ได้