2013-05-01 16 views
21

tôi đang cố gắng để thực hiện một loạt các của png thành một video sử dụng avconv, của png được đánh số như filename_<number> vì vậy tôi thường chỉ cần sử dụng lệnh:avconv: thực hiện một video từ một tập hợp con trên hình ảnh

avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4

bây giờ tôi muốn thực hiện một video từ một tập hợp con của các tập tin filename_8 - filename_50 cho phép nói, vì vậy tôi đã sao chép những tập tin này vào một thư mục mới và thử các lệnh tương tự, nhưng bây giờ tôi nhận được lỗi:

filename_%d.png: No such file or directory 

Tôi giả sử e điều này là do việc đánh số không bắt đầu từ 1?

Tôi làm cách nào để đạt được điều này?

+0

http://superuser.com/questions/624567/ffmpeg-create-a-video-from-images –

Trả lời

28
avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4 

Bạn sẽ cần một phiên bản 9.x gần đây của avconv cho các tùy chọn -start_number; nó không có trong phiên bản 0.8.x. Hoặc bạn có thể sử dụng phiên bản gần đây của ffmpeg. Hoặc đổi tên các tệp để bắt đầu bằng một số từ 0 đến 4, vì nó sẽ kiểm tra các tên đó theo mặc định.

+1

Lưu ý rằng trong một số phiên bản (9.16 cho tôi) tùy chọn này được âm thầm bỏ qua. 'avconv' không nhất thiết phải báo cáo lỗi trong trường hợp này, vì tùy chọn này có thể được hiểu là một phần của các công cụ sửa đổi dòng lệnh khác. – anol

+0

'avconv -r 10 -start_number 5 -i tt_img_0% 04d.jpg -b: v 1000k out.mp4' không hoạt động trong trường hợp của tôi:" Không có tệp hoặc thư mục như vậy ", mặc dù thực tế là các tệp có mặt bắt đầu từ 'tt_img_00005.jpg'. –

+0

'mencoder" mf: //*.jpg "-mf fps = 10 -o test.avi -ovc lavc -lavcopts vcodec = msmpeg4v2: vbitrate = 800' thực hiện thủ thuật một cách hoàn hảo. –

6

Bạn có thể nối các tệp với mèo và sau đó sử dụng trình giảm tốc image2pipe để đọc chúng trong avconv. Giống như cat filename* | avconv -f image2pipe -i - ...

5

Kiểm tra điều này; theo ffmpeg đây là cách họ thực hiện nó và nó hoạt động

  1. Đầu tiên, đổi tên hình ảnh của bạn để làm theo một chuỗi số. Đối với dụ: img1.jpg, img2.jpg, img3.jpg, ...
  2. Sau đó, bạn có thể chạy:

    ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg 
    

    ý rằng %d được thay thế bằng số lượng hình ảnh.

    img%03d.jpg nghĩa dãy img001.jpg, img002.jpg vv

  3. Sử dụng ‘-start_number’ tùy chọn để khai báo một số bắt đầu cho chuỗi . Điều này hữu ích nếu chuỗi của bạn không bắt đầu bằng img001.jpg nhưng vẫn theo thứ tự số. sau dụ sẽ bắt đầu với img100.jpg:

    ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg 
    
  4. Nếu bạn có số lượng lớn các hình ảnh để đổi tên, bạn có thể sử dụng lệnh sau đây để giảm bớt gánh nặng. Lệnh, sử dụng cú pháp bourne , liên kết tượng trưng tất cả các tệp trong thư mục hiện tại khớp với * jpg tới thư mục /tmp theo thứ tự img001.jpg, img002.jpg và cứ tiếp tục như vậy.

    x=1; 
    for i in *jpg; 
    do counter=$(printf %03d $x); 
    ln -s "$i" /tmp/img"$counter".jpg; 
    x=$(($x+1)); 
    
+0

Thiếu "xong" ở cuối ví dụ 4, phải không? – znt

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