Câu trả lời:
Một phương pháp là sử dụng overlay
bộ lọc video . Giả sử video của bạn là 640x480, thời lượng 30 giây, tốc độ khung hình 25:
ffmpeg -f lavfi -i nullsrc=s=640x480:d=35:r=25 -i video.mp4 -i audio.wav -filter_complex \
"[0:v][1:v]overlay[video]" -map "[video]" -map 2:a -codec:a copy -shortest output.mkv
Tôi đặt thời lượng của nullsrc
bộ lọc nguồn dài hơn 5 giây input.mkv
.
Hành vi mặc định của lớp phủ là lặp lại khung cuối cùng của nguồn được phủ. Xem eof_action
tùy chọn cho các hành vi khác.
Âm thanh trong ví dụ này đang được sao chép luồng (được trộn lại) thay vì được mã hóa lại.
Nhược điểm là các ví dụ này yêu cầu mã hóa lại do bộ lọc đang được sử dụng, nhưng nó có thể đơn giản hơn các phương thức khác vì nó chỉ là một lệnh.
Tôi tin rằng câu trả lời cho câu hỏi của bạn là "có". Tôi không quen thuộc lắm với FFMPEG, nhưng cách dễ nhất tôi có thể thấy để thực hiện mục tiêu của mình là trước tiên trích xuất khung hình cuối cùng thành hình ảnh, tạo video trong vài giây và sau đó chạy mã hóa nối video chính và video của bạn video mới được tạo trong một lần.