Làm thế nào để biết tôi nên sử dụng tốc độ khung hình nào để chụp webcam với ffmpeg?


2

Tôi đang quay video từ webcam của mình bằng lệnh sau:

ffmpeg -r 30 -f v4l2 -video_size 160x120 -i /dev/video0 output.avi

Tùy chọn -r chỉ ra tốc độ khung hình mà tôi muốn. Tuy nhiên, không phải tôi muốn 30 FPS, chỉ là nó không hoạt động chính xác.

Không có tốc độ khung hình, việc chụp rất có lỗi (tôi đoán nó cố gắng chụp quá nhiều, nhưng không thể làm theo).

Với tốc độ khung hình được đặt thành 15, video đầu ra dài hơn gấp đôi thời lượng chụp (loại chuyển động chậm).

Với tốc độ khung hình được đặt là 30, dường như mọi thứ đều ổn.

Làm thế nào tôi có thể chắc chắn rằng tôi nên sử dụng 30 khung hình / giây? Nếu tôi muốn chụp 15 khung hình / giây, tôi nên làm gì để phát lại chính xác?

Thông tin về webcam của tôi:

co@macbook2008:~$ v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
  Index       : 0
  Type        : Video Capture
  Pixel Format: 'YUYV'
  Name        : YUV 4:2:2 (YUYV)
    Size: Discrete 160x120
      Interval: Discrete 0.033s (30.000 fps)
      Interval: Discrete 0.036s (27.500 fps)
      Interval: Discrete 0.040s (25.000 fps)
      Interval: Discrete 0.044s (22.500 fps)
      Interval: Discrete 0.050s (20.000 fps)
      Interval: Discrete 0.057s (17.500 fps)
      Interval: Discrete 0.067s (15.000 fps)
      Interval: Discrete 0.080s (12.500 fps)
      Interval: Discrete 0.100s (10.000 fps)
      Interval: Discrete 0.133s (7.500 fps)
      Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 176x144
      Interval: Discrete 0.033s (30.000 fps)
      ... and so on for other resolutions

Cảm ơn bạn


Nếu tôi có nguy cơ đoán. Video nguồn cũng là 30 khung hình / giây. Đầu ra của lệnh bạn đã xác nhận điều này.
Ramhound

Làm thế nào để xác nhận, vì có nhiều khung hình / giây? Cái đầu tiên được sử dụng?
chocopoche

Tôi không hiểu Bạn đã ban hành một lệnh v4l2-ctl --list-formats-extvà đầu ra cho biết tốc độ khung hình và độ phân giải được hỗ trợ của thiết bị nguồn Nó thực sự chỉ ra rằng 30 khung hình / giây là mức cao nhất mà nó sẽ hỗ trợ.
Ramhound

Bạn cũng có thể đặt fps thành 27,5 nếu bạn muốn bằng cách thay đổi giá trị và ban hành lệnh sau:ffmpeg -r 27.5 -f v4l2 -video_size 160x120 -i /dev/video0 output.avi
Ramhound

Khi tôi làm ffmpeg -r 15 -f v4l2 -video_size 160x120 -i /dev/video0 output.avitrong 15 giây, tôi có khoảng 30 giây. Vì vậy v4l2-ctl --list-formats-ext, tôi nói rằng tôi có thể chụp ở tốc độ 15 khung hình / giây, nhưng tôi sẽ không thể chơi nó ở tốc độ phù hợp. Tôi đoán điều tương tự áp dụng cho 27,5 khung hình / giây, nhưng tôi không thể kiểm tra điều đó cho chắc chắn.
chocopoche
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.