Từ điển

Thời lượng là gì?

Thời lượng là tổng thời gian phát của một tệp âm thanh hoặc video. Sau đây là cách các tệp lưu giá trị này và lý do 2 chương trình có thể hiển thị các con số khác nhau.

duration

Thời lượng là khoảng thời gian mà một thứ gì đó kéo dài. Trong một tệp media, thời lượng nghĩa là tổng thời gian phát. Thời lượng video là thời gian video phát từ đầu đến cuối, và thời lượng audio cũng tương tự với một bài hát hoặc bản ghi âm.

Bạn thường thấy con số này trong trình phát media dưới dạng tổng thời gian. Trong metadata, cùng thông tin đó xuất hiện trong một trường tên là Duration.

Những tệp nào chứa nó

Thời lượng thuộc về các tệp phát theo thời gian, nghĩa là các tệp audio và video. Ảnh tĩnh và tài liệu văn bản thường không có trường thời lượng.

Ảnh động là một trường hợp đặc biệt. Một tệp GIF lưu độ trễ cho từng khung hình và không có tổng thời gian. ExifTool vẫn báo cáo một Duration cho một vòng lặp của ảnh động.

Giá trị đến từ đâu

Một số định dạng lưu trực tiếp độ dài. Các định dạng khác lưu những giá trị để phần mềm dùng để tính độ dài.

  • MP4 và MOV: phần header của phim lưu thang thời gian và thời lượng. Thang thời gian là số đơn vị thời gian trong một giây, và thời lượng là số đếm các đơn vị đó.
  • MKV và WebM: phần thông tin segment có thể chứa một phần tử Duration tùy chọn, được tính bằng ticks. Mặc định, một tick tương ứng với một mili giây.
  • MP3: thẻ ID3 có thể chứa một khung TLEN với độ dài tính bằng mili giây. ExifTool tính độ dài từ các giá trị khác, như kích thước tệp và bit rate.
  • FLAC: tệp lưu tổng số mẫu (sample) và tần số lấy mẫu (sample rate). Phần mềm tính độ dài từ 2 giá trị này, và tổng 0 nghĩa là số đó không được biết.
  • WAV: ExifTool tính độ dài từ số byte trung bình mỗi giây và kích thước tệp.

Giá trị trông như thế nào

Cùng một độ dài có thể xuất hiện dưới nhiều dạng khác nhau, tùy chương trình đọc tệp:

  • 00:05:15: giờ, phút và giây. Tệp này dài 5 phút 15 giây.
  • 15.23 s: số giây, có hiển thị đơn vị.
  • 200.541000: một con số không kèm đơn vị. Chương trình ffprobe của dự án FFmpeg in thời lượng theo cách này, với 6 chữ số sau dấu thập phân. Con số này nghĩa là 200,541 giây, khoảng 3 phút 21 giây.
  • N/A: trong định dạng xuất mặc định, ffprobe in giá trị này khi không có thời lượng. Các định dạng xuất JSON và XML thì bỏ qua thời lượng.

Một con số không kèm đơn vị không phải lúc nào cũng tính bằng giây. Khung TLEN đếm mili giây, và giá trị duration_ts trong ffprobe đếm các đơn vị của time base của luồng. Hãy kiểm tra trường nào đã đưa ra con số đó.

Vì sao các chương trình có thể hiển thị thời lượng khác nhau

Các chương trình khác nhau có thể hiển thị các thời lượng khác nhau cho cùng một tệp, và không nhất thiết chương trình nào sai. Có 4 lý do sau:

  • Làm tròn: một trình phát chỉ hiển thị số giây nguyên sẽ làm tròn 200.541 lên hoặc xuống.
  • Track riêng biệt: hình ảnh và âm thanh có các track riêng, và mỗi track có thời lượng riêng. Trong một tệp MOV, thời lượng phim tương ứng với track dài nhất.
  • Thời điểm bắt đầu: mỗi luồng có thể có thời điểm bắt đầu riêng. FFmpeg có thể đo từ thời điểm bắt đầu sớm nhất đến thời điểm kết thúc muộn nhất, nên một luồng bắt đầu trễ có thể làm tổng thời lượng dài hơn.
  • Ước tính: một tệp có thể có bit rate nhưng không có thời lượng. Khi đó FFmpeg ước tính thời lượng từ bit rate và kích thước tệp, và cảnh báo rằng kết quả có thể không chính xác.

Tại sao nó quan trọng

Thời lượng giúp bạn kiểm tra tệp mà không cần phát. Nếu bạn mong đợi một đoạn clip dài 5 phút 15 giây nhưng lại thấy 15.23 s, tệp này có thể không phải tệp bạn cần.

Thời lượng cũng liên quan đến các giá trị khác. FFmpeg có thể tính bit rate tổng thể từ kích thước tệp và thời lượng.

Meta Keys