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 mencoder
bạ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.txt
chứ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 ffmpeg
cụ 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