Từ điển

Tốc độ khung hình là gì?

Tốc độ khung hình là số khung hình mà một video hiển thị mỗi giây, được tính bằng fps. Một báo cáo metadata có thể hiển thị nó dưới dạng phân số, ví dụ 25/1.

frame-rate

Tốc độ khung hình là số ảnh tĩnh, gọi là khung hình, mà một video hiển thị trong mỗi giây. Đơn vị là khung hình trên giây, viết tắt là fps. Các tiêu chuẩn kỹ thuật cũng gọi nó là tần số khung hình.

Trong một tệp video, tốc độ khung hình là một giá trị metadata mô tả luồng video. Ở 25 fps, mỗi khung hình ở trên màn hình trong 1/25 giây, tức 40 mili giây.

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

Định dạng video như MP4, MOV, MKV, WebM, AVI, WMV và FLV có thể chứa tốc độ khung hình. Mỗi định dạng lưu giá trị theo cách riêng:

  • MP4 và MOV: một bảng time-to-sample liệt kê các chuỗi khung hình có cùng thời lượng. ExifTool tính VideoFrameRate là giá trị trung bình từ bảng này. Một số tệp MP4 cũng lưu tốc độ trung bình và tối đa trong các thẻ như VideoAvgFrameRate và VideoMaxFrameRate.
  • MKV: trường DefaultDuration cho biết thời gian mỗi khung hình tính bằng nano giây. Trường FrameRate chỉ mang tính thông tin.
  • WebM: định dạng này là một tập con của Matroska và cũng có thể dùng DefaultDuration. Hướng dẫn WebM đánh dấu FrameRate là đã lỗi thời.
  • AVI: tốc độ trong header của luồng chia cho scale của nó là tốc độ khung hình.
  • WMV và FLV: metadata có thể chứa một thẻ tốc độ khung hình.

Một luồng âm thanh không có loại tốc độ khung hình này. ffprobe của FFmpeg hiển thị 0/0 cho nó.

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

Báo cáo có thể hiển thị tốc độ khung hình ở dạng số thập phân, như 29.97, hoặc dạng phân số, như 25/1. Phân số 25/1 nghĩa là 25 khung hình trong 1 giây. Phân số giữ được độ chính xác khi tốc độ không phải là số nguyên.

Đây là các giá trị thường gặp:

  • 24/1: 24 fps, tốc độ điển hình của phim điện ảnh
  • 24000/1001: khoảng 23,976 fps, mà FFmpeg gọi là ntsc-film
  • 25/1: 25 fps, mà FFmpeg gọi là pal
  • 30000/1001: khoảng 29,97 fps, mà FFmpeg gọi là ntsc
  • 50 và 60: các tốc độ thường dùng cho video tải lên, theo YouTube
  • 120: một giới hạn trên, không phải giá trị thường gặp. Đây là tốc độ cao nhất trong tiêu chuẩn ITU cho truyền hình độ phân giải siêu cao.

Tốc độ khung hình cố định và biến thiên

Với tốc độ khung hình cố định, mọi khung hình đều có cùng thời lượng. Với tốc độ khung hình biến thiên, thời gian giữa các khung hình thay đổi trong suốt video.

ffprobe của FFmpeg hiển thị 2 trường: avg_frame_rate là tốc độ trung bình, và r_frame_rate là tốc độ cơ sở. Tốc độ cơ sở là tốc độ thấp nhất có thể biểu diễn chính xác mọi dấu thời gian, và tài liệu FFmpeg gọi nó là một giá trị ước đoán.

Ví dụ, nếu các khung hình có thời lượng 1/25 hoặc 1/50 giây, r_frame_rate là 50/1. Giá trị trung bình thấp hơn, nên 2 trường này khác nhau. Dấu thời gian được đếm theo đơn vị của time base.

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

Video được ghi sẽ có tốc độ khung hình ngay trong lúc ghi. Bộ mã hóa có thể thay đổi nó sau đó, ví dụ bằng cách loại bỏ khung hình để làm video nhỏ hơn.

Video quét xen kẽ (interlaced) có thể hiển thị một con số khác. Với video này, framework AVFoundation của Apple báo cáo tốc độ trường (field rate), không phải tốc độ khung hình.

Tại sao nó quan trọng

Tốc độ khung hình chủ yếu ảnh hưởng đến độ mượt của chuyển động. Tốc độ cao hơn cho chuyển động mượt hơn, nhưng lợi ích giảm dần khi tốc độ tăng. Dưới khoảng 12 khung hình mỗi giây, bạn sẽ thấy một chuỗi ảnh tĩnh thay vì chuyển động.

Từ 24 fps trở lên, chuyển động thường trông mượt, và 30 hoặc 60 fps là mục tiêu hợp lý. Tốc độ cao hơn cũng làm tệp nén lớn hơn, trừ khi bộ mã hóa giảm tốc độ. Vì vậy 60 fps có thể mượt hơn 30 fps, nhưng kích thước tệp tăng.

YouTube yêu cầu bạn tải lên video với cùng tốc độ khung hình khi bạn ghi. Ở tốc độ cố định, tốc độ nhân với thời lượng sẽ ra số khung hình. Ví dụ 25 fps trong 4 giây sẽ có 100 khung hình.