พจนานุกรม

Duration คืออะไร?

Duration คือระยะเวลาการเล่นรวมทั้งหมดของไฟล์เสียงหรือวิดีโอ ต่อไปนี้คือวิธีที่ไฟล์เก็บค่านี้ไว้ และเหตุผลที่โปรแกรม 2 ตัวอาจแสดงตัวเลขไม่เหมือนกัน

duration

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 ได้

คีย์เมตา