Hamparan video FFmpeg

1

Saya mencoba overlay video input dengan banyak gambar di mana setiap gambar harus ditampilkan untuk waktu yang singkat. Saya mencapai ini menggunakan filter kompleks (perintah di bawah). Masalahnya adalah saya punya banyak, banyak gambar (> 1000) :-)

ffmpeg -y -i in.mp4 

-i logo1.png 
-i logo2.png 
-i logo3.png 

-filter_complex "

[0:v][1:v] overlay=10:10:enable='between(n,2,4)'    [tmp]; 
[tmp][2:v] overlay=30:30:enable='between(n,6,8)'    [tmp]; 
[tmp][3:v] overlay=50:50:enable='between(n,10,12)'; 

" out.mp4 

Apakah FFmpeg memungkinkan pengguna untuk melewatkan data ini di atas file teks? Gambar dihasilkan dalam memori, jadi pipa juga baik-baik saja (sebenarnya lebih disukai).

(jika itu tidak mungkin, bisakah saya mengirimkan video yang dihasilkan dalam format Bgra?; tetapi saya tidak akan memilih ini karena operasi campuran lebih mahal + lebih banyak IO: harus secepat mungkin)


Sunting: Jika saya menggunakan konfigurasi berikut, hanya gambar yang terakhir dikirim overlay.

-i ski.mp4 
-f image2pipe -vcodec png -i -

-filter_complex "[0:v][1:v] overlay=10:10:enable='between(n,2,3)' [tmp]; 
                 [tmp][1:v] overlay=30:30:enable='between(n,6,7)'"

-f mp4", "out.mp4"

Keluaran FFmpeg (tampaknya melompati gambar jika memiliki ukuran berbeda):

 Input stream #1:0 frame changed from size:1417x665 fmt:rgba to size:1800x700 fmt:rgba
 Input stream #1:0 frame changed from size:1800x700 fmt:rgba to size:550x371 fmt:rgba
 Input stream #1:0 frame changed from size:550x371 fmt:rgba to size:256x256 fmt:rgba

Bagaimana saya bisa menginstruksikan FFmpeg bahwa untuk filter pertama menggunakan gambar 1, untuk gambar 2 kedua di pipa, dll. ( Gambar memiliki ukuran yang berbeda )?

dajurik
sumber

Jawaban:

2

Jika Anda dapat memasukkan gambar sebagai urutan dan menentukan overlay x, yserta kualifikasi waktu sebagai ekspresi, maka ini dapat dibuat sebagai perintah yang dapat dikelola.

Anda dapat memasukkan gambar melalui pipa menggunakan -f image2pipe -vcodec pngopsi input.

Juga, FFmpeg dapat mereferensikan filterchain dari skrip

-filter_complex_script nama file (global)

Opsi ini mirip dengan -filter_complex, satu-satunya perbedaan adalah argumennya adalah nama file dari mana deskripsi filtergraph yang kompleks harus dibaca.

Gyan
sumber
Bisakah Anda tunjukkan saya cara menggunakan image2pipe dengan benar mengenai pertanyaan ini (lihat jawaban yang diedit di atas)? (Saya sudah mencoba melewati video rgba, itu berfungsi, tetapi terlalu lambat). Terima kasih lagi.
dajurik