2012-11-27 68 views
34

Tôi đang cố gắng tạo video bằng một loạt hình ảnh .png. Tôi thấy kịch bản Python này, nhưng tôi không hoàn toàn chắc chắn về cách sử dụng nó:Python: Tạo video bằng cách sử dụng một số hình ảnh .png

https://sites.google.com/site/timelapsepy/home

Tôi cũng cố gắng nhìn vào opencv, nhưng nó dường như không cài đặt đúng cho tôi. Bất kỳ ý tưởng nào về một chương trình đơn giản để kết hợp nhiều hình ảnh lại với nhau để tạo video tua nhanh thời gian? Tôi muốn sử dụng Python cho điều này nếu có thể.

+1

Các ví dụ cho timelapsepy mà dường như khá đơn giản. Và nó thậm chí không có vẻ đòi hỏi nhiều kiến ​​thức python vì nó chỉ là một tiện ích dòng lệnh. Bạn bị kẹt ở phần nào? Một giải pháp kịch bản python tinh khiết sẽ khó khăn hơn cho điều này. OpenCV hoặc PIL sẽ khó sử dụng hơn nếu bộ công cụ này đã gây nhầm lẫn cho bạn. – jdi

+0

Thư mục mẫu mà tôi chỉ bao gồm một vài hình ảnh và một video. Tôi không hoàn toàn hiểu được điều đó sẽ giúp ích gì. =/ – user1620716

+0

Kịch bản này có nghĩa là để làm cho một thời gian trôi đi. Đó có phải là mục tiêu của bạn không? Nếu tất cả những gì bạn muốn làm là kết hợp trực tiếp hình ảnh png vào video, bạn có thể sử dụng phương pháp 'ffmpeg' đó từ hướng dẫn. – jdi

Trả lời

41

Nếu bạn thực sự cần một giải pháp python kịch bản, bạn có thể nhìn vào sử dụng PIL

Nhưng nếu bạn chỉ muốn một cách dễ dàng chuyển đổi một chuỗi hình ảnh png để một bộ phim, bạn chỉ có thể sử dụng ffmpeg:

ffmpeg -f image2 -r 1/5 -i image%05d.png -vcodec mpeg4 -y movie.mp4 

Lệnh này chụp ảnh có đệm 5 chữ số (image00001.png) và nén chúng thành thời gian nhanh mpeg4, với tốc độ giữ mỗi khung trong 5 giây. Bạn có thể làm một fps khác nhau nếu hình ảnh của bạn là lớn hơn: -r 24 (24 khung hình mỗi giây)

+12

Đối với tất cả mọi người đọc này: Pythons 'PIL' lib đã được thay thế bằng' gối' và ffmpeg bởi libav/avconv. Xem câu trả lời của Qin Chen cho giải pháp mới hơn. – Izzy

+0

điều gì sẽ xảy ra nếu tôi có nhiều hình ảnh với quy ước đặt tên tương tự và muốn tạo các video khác nhau trong số chúng với tên trong một phạm vi. Ví dụ: image0001 - image 0090 là movie1, image0230 - image0320 làm movie2? bất kỳ ý tưởng? –

+0

@KexinXu - Sau đó, bạn cần sử dụng cờ '-start_number ' trước đầu vào, để cho biết khung nào sẽ bắt đầu tại, và có lẽ là '-t ' để cho nó biết thời gian thực hiện nó. – jdi

14

Thay vì ffmpeg, bạn có thể muốn sử dụng avconv

avconv -f image2 -i figMatplotlib%d.png -r 76 -s 800x600 foo.avi 
+5

bạn có chắc chắn rằng ffmpeg không còn được dùng nữa, hãy xem tại đây: http://git.videolan.org/?p=ffmpeg.git;a=log;h=HEAD – Oren

+0

những gì nếu tôi có nhiều hình ảnh với quy ước đặt tên tương tự và muốn tạo các video khác nhau trong số chúng với tên trong một phạm vi. Ví dụ: image0001 - image 0090 là movie1, image0230 - image0320 làm movie2? bất kỳ ý tưởng? –

+3

ffmpeg không được dùng nữa! Vui lòng xem câu trả lời này: http://stackoverflow.com/questions/9477115/what-are-the-differences-and-similarities-between-ffmpeg-libav-and-avconv/9477756#9477756 – user89

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