2010-10-12 37 views
16

Tôi đã đăng ý kiến ​​này dưới dạng các bình luận theo số this related thread. Tuy nhiên, họ dường như đã đi không được chú ý = (ffmpeg chia avi thành các khung có tỷ lệ khung hình đã biết

Tôi đã sử dụng

ffmpeg -i myfile.avi -f image2 image-%05d.bmp 

chia myfile.avi vào khung lưu trữ như .bmp tập tin. Nó dường như làm việc ngoại trừ không hoàn toàn. Khi quay video của tôi, tôi ghi lại với tốc độ 1000fps và video bật ra được 2min29sec dài. Nếu toán học của tôi là đúng, rằng nên số tiền tổng cộng 149.000 khung cho toàn bộ video. Tuy nhiên, khi tôi chạy

ffmpeg -i myfile.avi -f image2 image-%05d.bmp 

Tôi chỉ thu được 4472 tệp. Làm cách nào để có được khung hình 149k gốc?

Tôi cũng đã cố gắng để chuyển đổi tỷ lệ khung hình của AVI ban đầu của tôi để 1000fps bằng cách làm

ffmpeg -i myfile.avi -r 1000 otherfile.avi 

nhưng điều này dường như không phải sửa chữa mối quan tâm của tôi.

Trả lời

31
ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png 

Tôi không chắc chắn xuất 150k tệp bmp sẽ là một ý tưởng hay. Có lẽ png là đủ tốt?

+0

tính năng này hoạt động đối với video của tôi mà tôi đã ghi lại khỏi máy ảnh bút – silberbaum

11

Phần một trong toán học của bạn là tốt, 2 phút và 29 giây là khoảng 149 giây. Với 1000 khung hình/giây tạo ra 149.000 khung hình. Tuy nhiên, tên tệp đầu ra của bạn chỉ có 5 vị trí cho số 149000 có 6 vị trí, vì vậy hãy thử "image-% 06d.bmp".

Sau đó, có kích thước đĩa: Hình ảnh của bạn có vừa với đĩa không? Với bmp, mỗi hình ảnh sử dụng kích thước riêng của nó. Bạn có thể thử sử dụng hình ảnh jpeg, chúng nén tốt hơn khoảng 10 lần.

Một ý tưởng khác: Nếu ffmpeg không tìm thấy tốc độ khung hình (hợp lý), nó sẽ giảm xuống còn 25 hoặc 30 khung hình mỗi giây. Bạn có thể cần phải xác định nó. Làm như vậy cho cả nguồn và đích, xem man page (man ffmpeg trên unix):

To force the frame rate of the input file (valid for raw formats 
    only) to 1 fps and the frame rate of the output file to 24 fps: 
      ffmpeg -r 1 -i input.m2v -r 24 output.avi 

Đối với những gì nó có giá trị: Tôi sử dụng ffmpeg -y -i "video.mpg" -sameq "video.%04d.jpg" để chia nhỏ video của tôi để hình ảnh. Các -sameq là để buộc jpeg trong một chất lượng hợp lý, -y là để tránh cho phép ghi đè lên các câu hỏi. Dành cho bạn:

ffmpeg -y -r 1000 -i "Myfile.av" -sameq "ảnh% 06d.jpg."

+0

-sameq hiện không được dùng nữa –

0

Tôi nghĩ rằng, có một quan niệm sai lầm ở đây: các sản phẩm của một hệ thống video HS dường như không có tốc độ khung hình đầu ra là 1000 khung hình/giây nhưng có điều gì đó khá bình thường là 30 (hoặc 50/60) khung hình/giây. Ngoài việc quá tải hầu hết các trình phát video với loại tốc độ này, nó sẽ phản tác dụng để hiển thị chuỗi với cùng tốc độ như được ghi lại. Về cơ bản: 1 giây @ 1000 fps đầu vào là một cái gì đó giống như 33 giây @ 30 fps đầu ra.

Thời lượng của cảnh được ghi thực sự là 2:29 phút (kết quả là video ~ 82 phút ở tốc độ bình thường) hoặc mất khoảng 4,5 giây (4472 khung hình) trong 2:29 phút phát lại bình thường?

Các vấn đề liên quan