ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4
Để hiểu lệnh này, bạn cần biết trình xác định luồng là gì và đọc phần Giới thiệu về FFmpeg Filtering sẽ giúp ích. [0:v]
đề cập đến (các) luồng video của đầu vào thứ nhất ( video.mp4
) và [1:v]
đề cập đến luồng video của đầu vào thứ hai ( logo.mp4
). Đây là cách bạn có thể cho biết overlay
những gì đầu vào để sử dụng. Bạn có thể bỏ qua [0:v][1:v]
, và overlay
vẫn sẽ hoạt động, nhưng nên rõ ràng và không dựa vào các mặc định có thể chưa biết.
Theo mặc định, logo sẽ được đặt ở phía trên bên trái.
Sử dụng -codec:a copy
sẽ truyền phát bản sao âm thanh. Điều này chỉ đơn giản là điều chỉnh lại âm thanh thay vì mã hóa lại nó. Hãy nghĩ về nó như là một "bản sao và dán" của âm thanh.
Di chuyển logo
Ví dụ này sẽ di chuyển logo 10 pixel sang phải và 10 pixel xuống:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4
Ví dụ này sẽ di chuyển logo 10 pixel từ bên phải và 10 pixel xuống:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4
main_w
đề cập đến chiều rộng của đầu vào "chính" (nền hoặc [0:v]
) và overlay_w
đề cập đến chiều rộng của đầu vào "lớp phủ" (logo hoặc [1:v]
). Vì vậy, trong ví dụ, điều này có thể được dịch sang overlay=320-90-10:10
hoặc overlay=220:10
.
Thời gian lớp phủ
Một số bộ lọc có thể xử lý chỉnh sửa dòng thời gian cho phép bạn sử dụng các biểu thức số học để xác định khi nào nên áp dụng bộ lọc. Tham khảo để ffmpeg -filters
xem bộ lọc nào hỗ trợ chỉnh sửa dòng thời gian.
Ví dụ này sẽ hiển thị logo cho đến 30 giây:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4
Nếu bạn muốn làm mờ logo, hãy tham khảo câu trả lời của mark4o .