ffmpeg: Cách đặt nhiều lớp phủ và làm mờ dần trên cùng một cách hợp lý


5

Tôi đang cố gắng đặt nhiều lớp phủ lên nhau và mờ dần trên cùng sau một số khung. Do đó, tôi đang sử dụng 2 tệp .png nên được đặt trên video cuối cùng theo thứ tự sau:

fademe.png & lt; - Lớp phủ trên cùng, nên được làm mờ sau một số khung

overlay.png & lt; - lớp phủ thứ hai, luôn hiển thị

movie.mov & lt; - một bộ phim làm lớp dưới cùng

Tôi đang sử dụng mã này để tạo .mov được mã hóa PNG từ các lớp phủ:

ffmpeg -y -loop 1 -i fademe.png -loop 1 -i overlay.png -filter_complex "[0:0]fade=out:25:25[fad];[1:0][fad] overlay" -vframes 55 -vcodec png overlay.mov

Sau đó, tôi đang sử dụng ffmbc để đặt lớp phủ lên trên một video khác.

(Tôi đang sử dụng ffmbc vì đầu ra cuối cùng sẽ là ProRes4444)

ffmbc -y -threads 0 -i movie.mov -vf "movie=overlay.mov [watermark]; [in][watermark] overlay [out]"  -vcodec libx264 faded.mp4

Video đầu ra trông đẹp cho đến khi bắt đầu mờ dần và fademe.png [fad] dường như bị mờ dần thành màu trắng và làm một số điều kỳ lạ với màu sắc bên dưới cho đến khi nó biến mất.

Khi tôi thay đổi thứ tự cuối cùng overlay từ [1:0][fad] overlay đến [fad][1:0] overlay vì vậy nó trông như thế này:

ffmpeg -y -loop 1 -i fademe.png -loop 1 -i overlay.png -filter_complex "[0:0]fade=out:25:25[fad];[fad][1:0] overlay" -vframes 55 -vcodec png overlay.mov

sự mờ dần có vẻ đúng, nhưng overlay.png [1:0] không nên là lớp trên cùng.

Tôi đoán là có điều gì đó không ổn xảy ra với kênh alpha trong lần thử đầu tiên của tôi.

Bất kỳ đề xuất làm thế nào để giải quyết vấn đề này?

Câu trả lời:


7

Không cần thiết phải sử dụng hai lệnh và tạo một tệp trung gian với kênh alpha. Một lệnh đơn có 3 đầu vào, 2 bộ lọc lớp phủ và bộ lọc mờ dần với alpha=1 Hãy làm nó:

ffmpeg -y -i movie.mov -loop 1 -i overlay.png -loop 1 -i fademe.png \
-filter_complex '[0:v][1:v] overlay [V1]; \
[2:v] fade=out:25:25:alpha=1 [V2]; [V1][V2] overlay' \
faded.mp4

Đáng buồn thay, ffmbc không thể xử lý -filter_complex. Có cách nào làm điều tương tự với tùy chọn -vf không?
evilheinz

1
@evilheinz Thật không may, ffmbc khá chậm phát triển. Có bất kỳ lý do nào bạn cần nó và không thể sử dụng FFmpeg? Lý tưởng nhất là các tính năng bổ sung của ffmbc sẽ được chuyển trở lại FFmpeg.
slhck

1
@evilheinz sự khác biệt cần thiết nhất giữa lệnh này và lệnh của bạn là lệnh này đang mờ dần thành alpha (đây không phải là mặc định); thử sử dụng [0:0]fade=out:25:25:alpha=1[fad] trong lệnh đầu tiên của bạn.
evilsoup

@slhck Tôi đã dự định sử dụng ffmbc để lấy ProRes4444 làm đầu ra. Lần trước tôi đã kiểm tra mã hóa ProRes4444 trên ffmpeg, nó không đặt đúng bốncc để nó được công nhận là ProRes422 (HQ) trong Quicktime Player. Khi chuyển mã với ffmbc, tệp được phát hiện chính xác là ProRes4444.
evilheinz

@evilsoup fading vẫn trông có vẻ vui khi sử dụng alpha = 1 ...
evilheinz

1

Tôi nghĩ rằng tôi đã tìm thấy một giải pháp:

Đầu tiên tôi tạo ra một bộ phim trung gian của logo mờ dần

ffmpeg -y -loop 1  -i fademe.png -filter_complex "fade=out:25:25" -vframes 55 -vcodec png fademe.mov

sau đó tôi đã sử dụng lệnh này với ffmbc

ffmbc -i movie.mov -vf "movie=overlay.png [over]; movie=fademe.mov [fade]; [in][over] overlay [inter]; [inter][fade] overlay [out]" -vcodec libx264 out.mp4

... Heureka !!!

Logo ngồi trên đầu của bố cục đang mờ dần đẹp và mịn!

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.