tạo một video từ một loạt 400 hình ảnh với thời gian khác nhau cho mỗi hình ảnh


2

Tôi muốn tạo video hoặc trình chiếu từ một loạt 400 hình ảnh (.jpg) với thời gian trôi đi khác nhau (Tôi có một tệp văn bản cho biết thời gian cho mỗi hình ảnh tính bằng mili giây)

Ví dụ:

image 0001.jpg is 225 msec
image 0002.jpg is 480 msec
image 0003.jpg is 1200 msec

Làm cách nào tôi có thể tạo một video như vậy với nỗ lực tối thiểu?

Câu trả lời:


2

Một cách là tạo một video từ mỗi hình ảnh, sau đó kết hợp tất cả chúng lại. Với mencoderbạn có thể làm như sau:

Điều này sẽ tạo ra một video với 1 khung hình mỗi giây từ image.jpg:

mencoder "mf://image.jpg" -ovc x264 -mf  fps=1  -o output.avi

Điều này sẽ lấy hai video và hợp nhất chúng thành một:

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 

Nó có thể trông giống như thế này. Mỗi dòng durations.txtchứa thời lượng (tính bằng mili giây ở đây) và hình ảnh được đặt tên như trong ví dụ của bạn. Điều này có nghĩa là một ví dụ và có thể không hoạt động như được trình bày:

i = 0
while read line; do
    padded = $(printf "%04d\n" $i)
    fps = $(echo "scale=3; 1/$i/1000" | bc -q 2>/dev/null)
    if [ i -eq 0 ]; then
        mencoder "mf://image$padded.jpg" -ovc x264 -mf  fps=$fps -o previous.avi
    else
        mencoder "mf://image$padded.jpg" -ovc x264 -mf  fps=$fps -o next.avi
        mencoder -ovc copy -oac copy previous.avi next.avi -o building.avi
        rm previous.avi
        mv building.avi previous.avi
    fi
    i = $[i + 1];
done < durations.txt

Công ffmpegcụ này có chức năng tương tự :

ffmpeg -loop 1 -i img.png -c:v libx264 -t 30 -pix_fmt yuv420p out.mp4
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
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.